Java抽象类和接口详解

2019-03-19  本文已影响0人  好大一颗星

《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

上一篇 下一篇

猜你喜欢

热点阅读