一、抽象类
(一)什么是抽象类?
包含抽象方法的类称为抽象类,但并不意味着抽象类中只有抽象方法。
它和普通类一样,可以拥有成员变量和普通的成员方法。
(二)抽象类和普通类的主要区别
1.抽象方法必须为public或protected,原因:若为private,则该方法不能被子类继承,子类便不能重写该方法。
2.抽象类不能用来创建对象。
3.一个类若继承于一个抽象类,则需要重写父类(抽象类)的抽象方法,否则该类也须定义为abstract类。
(三)抽象类定义抽象方法的好处
1.约束子类方法名的统一。
2.阅读中大型项目时可先查看抽象类和接口,可快速了解项目大纲。
3.相近项目中可以共用。
二、接口
(一)什么是接口?
接口是具有一定功能和约束的特殊类,接口为其他具体类提供了一些不是类本身的特定的功能。接口是一种更加抽象的抽象类,一般情况下,在接口中不定义变量。
接口中可以含有变量和方法:
1.变量只能是public static final变量,即常量。
2.方法只能是public abstract方法,默认的。若为protected或private方法,则编译报错。即方法不能具体化,只能是抽象方法。
(二)接口的实现
一个类可遵循实现多个接口。若一个普通类遵循了一个或多个接口,就必须实现接口中的所有方法。若是抽象类遵循了接口,可实现也可不实现接口的方法。
接口也可以继承(一个或多个)接口。
(三)接口与抽象类的区别
1.抽象类中可以含有非抽象方法;接口只有抽象方法。
2.抽象类中的成员变量类型可以是各种类型;接口只能定义常量。
3.抽象类可以含有静态代码块和静态方法;接口不能含有静态代码块和静态方法。
4.一个类可以实现多个接口;一个类只能继承于一个抽象类。
(四)接口与抽象类的相同点
1.都不能被实例化。
2.都能被继承(或实现)。
3.被继承(或实现),子类(或实现类)都需要重写抽象方法。