不能被实例化的类,只能被继承
定义:使用关键字abstaract修饰类
1 被abstract修饰的类就是抽象类
2 可以被继承,也可以继承其他类
3 不能创建实例
4 其它资源和普通类一样
public abstract class People{
private String name;
private String sex;
private int age;
public void eat(){}
public void sleep(){}
}
抽象方法
定义:使用abstract修饰方法
1只能存在于抽象类中
2不能有方法体
3如果子类继承了含有抽象方法的抽象类,那么必须要重写抽象方法
public abstract void play();继承抽象类
public class Hero extends People{
public void skill(){
System.out.println("独特的技能");
}
//重写父类中的抽象方法
public void play(){
System.out.println("我可以玩游戏");
}
}
接口
修饰符:interface
特点:
不能被创建对象
只能包含抽象方法
接口只能被实现,实现接口的类必须重写接口中的所有抽象方法
实现接口关键字:implement
一个类可以实现多个接口
接口可以继承接口,不能继承类
接口实例public interface Demo { //接口
public void m1(); //抽象方法
}
实现接口
public class Son implements Demo,Demo02,Demo03 { //一个类可以实现多个接口
@Override
public void m1() { //必须重写接口中的抽象方法
}
}
接口的继承
public interface Demo03 extends Demo{ //接口只能继承接口
}
总结
抽象类的特点(对比普通类)
1抽象类中包含普通类中的所有元素,同时包含抽象方法(普通类中没有抽象方法)
2抽象类中也有构造器,但是不能被实例化(不能创建对象)
3抽象类可以继承抽象类(只能单继承),不需要实现抽象方法
4普通类继承抽象类,必须要实现抽象方法
5抽象类必然要被继承
6抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类
接口的特点接口不能实现接口,因为接口无法实现方法
接口可以继承接口,还可以多继承
一个类实现接口或多个接口,必须实现所有接口中的所有抽象方法
一个类继承其它类,还可以同时实现接口
接口中的属性默认是常量(默认被static和final修饰)
jdk8新特性给接口中方法提供默认实现,让实现它的类可以不实现该方法(jdk8以上版本)
public interface Demo { //接口
default void m1(){}; //defualt 接口方法默认实现
}
抽象类和接口对比
1抽象类使用abstract来修饰,接口使用interface来修饰
2抽象类有构造方法,接口没有抽象方法
3抽象类中可以有main函数,并且可以运行,接口中没有main函数
4普通类使用extends来继承抽象类,使用implement来实现接口
5一个类只能继承一个抽象类,但可以实现多个接口



