抽象类
使用 abstract 修饰的类。
抽象类是一种特殊的类,他不能够创建对象,它能够作为父类,产生子类,然后可以通过子类创建对象。
为什么会有抽象类
- 有些类并不能够直接创建对象,或者说,有些类不能够直接派生出一个直接的对象
- 有些类,作为父类使用时,方法可以确定,但是方法的实现内容不确定。就可以将父类定义为抽象类,方法定义为抽象方法,可以在子类中重写方法。
抽象方法
使用 abstract 修饰的方法,只有方法的声明,没有方法体。
因为抽象方法是没有完整的方法体,所以不是一个完整的方法,所以要在子类中重写该方法。
- 抽象方法只能定义在抽象类中,即有抽象方法的类一定是抽象类。抽象类中可以有抽象方法,也可以有普通方法。
- 抽象类的子类,要么去实现父类的所有抽象方法,要么本身也是一个抽象类。
接口
接口能够更好的做到高内聚,低耦合
定义:是一种比抽象类更抽象的数据类型。(interface)
接口的方法默认都是抽象方法,即接口也不能够创建对象。接口的使用也跟抽象类一样,需要实现类。
在接口中定义的方法默认使用 public abstract修饰。就是抽象方法。
实现接口一定要实现接口内的抽象方法,不然只能定义为抽象类。
为什么要使用接口?
Java中有一个概念:单继承,多实现。
因为一个类只能有一个直接的父类,即一个孩子只能有一个亲爹。
但是一个类可以实现多个接口,即一个孩子可以有多个干爹。