《abstract关键字》
——————————
抽象类:含有抽象方法的类。抽象类必须也要用abstract关键字定义。
抽象方法:使用abstract关键字定义的方法,抽象方法没有具体的方法体;抽象类必须也要用abstract关键字定义。
什么时候需要定义抽象方法?一个方法如果在父类中的实现没有任何意义,必须根据子类的实际需求进行不同的实现,就可以将该
方法声明为抽象方法,由子类去重写该方法。
抽象类的特点:
1)抽象类中的抽象方法的访问权限不能为private,否则该方法无法被子类继承,抽象方法就没有任何意义;
2)一个子类如果继承了抽象类,则必须实现父类中所有的抽象方法,否则,需要将该子类也定义为抽象类;
3)抽象类和普通类一样,允许拥有普通的方法成员和属性成员;
4)抽象类不能用来创建实例对象。
《interface关键字》
——————————
接口:使用interface关键字定义的类
1.接口的特点:
1)接口中的数据成员都是public static final——编译时常量 修饰的(默认,若定义为其他则会编译报错)
2)接口中的方法成员都是抽象方法,都采用public abstract 修饰(默认,定义为其他会编译错误),顾接口中的方法都没有具
体的方法体;
3)一个子类如果继承一个接口,则必须实现接口中的所有方法(抽象方法)
2. abstract关键字:
1)使用abstract关键字定义的类为抽象类,抽象类不能实例化,可以有非抽象方法以及自己的成员属性。
2)使用abstract关键字定义的方法为抽象方法,抽象方法没有方法体,如果这个方法不被子类重写,将没有任何意义。而
具有抽象方法的类,必须定义为抽象类。
《接口和抽象类的区别汇总:》
——————————————
*1)抽象类是对一种事物的抽象,比如鸟类,虫类;而接口是对事物行为的一种抽象,比如鸟类会飞,飞机会飞,就可以将“飞
”这种共有行为抽象出来;
2)所以,抽象类中可以拥有普通的属性成员和方法成员,但接口中只含有抽象方法和类常量(static final 编译时常量);
3)所以,一个类是否要继承一个接口,取决于这个类需不需要拥有接口中定义的方法;而一个类需不需要继承一个抽象类,取
决于该类是不是要属于这个类的子类;
举个例子:海鹰要继承鸟类这个抽象类,拥有鸟类基本的属性和方法;海鹰还需要继承 潜水这个接口,使其具有潜水接口中的某些
方法。
*4)从设计层面上讲,抽象类是一中模板式设计,所有继承抽象类的子类的公共部分需要改动时,只需要改动抽象类即可;而接
口的设计辐射式的,当接口改动时,子类都需要进行变更。
*5)从使用上讲,因为接口和抽象类都含有抽象方法(abstract修饰的方法,且没有具体的方法体),所以接口和抽象类都不能
实例化。
*6)一个类只能继承一个类,但是可以继承多个接口!
class 类名 implements 接口1,接口2,...接口n