1.抽象类与抽象函数
举例来说,Rectangle(矩形)或Circle(圆)都可以实例化来表达具体的对象,而在此之上如果我们要表达形状类就应该定义为抽象类。因为Shape只是为了表达一个抽象概念,不需要实例化对象也不能实例化。抽象类可包含抽象函数也可不包含(保证类不被实例化),带有抽象函数的类一定是抽象类。抽象类不能制造对象但可以定义变量,任何继承了抽象类的非抽象类的对象都可以赋值给这个对象。eg:Shape shape = new Circle();
抽象函数:表达概念而无法实现具体代码的函数。
抽象类:表达概念而无法构造出实体的类。
2.接口
接口也是为了表达抽象,表达规范。
接口是纯抽象类,成员函数都是抽象函数,成员变量都是public static final 常量。
一个类可继承多个接口,接口也可继承接口(但不能继承类),弥补了java单继承的不足。
接口当然也不能实例化对象,但可以定义变量,所有实现了该接口的类所实例化的对象都可以付给该变量。