立即学习:https://edu.csdn.net/course/play/27126/355507?utm_source=blogtoedu
有抽象方法的必须是抽象类,反之不然
但抽象类可以没有抽象方法
抽象方法不能定义方法体
子类继承抽象方法是,必须实现抽象方法
abstract class Animal{
abstract void run()
}
class Cat extends Animal {
void run() {
System.out.println("cat");
}
}
java 不能同时继承多个类, 所有的java类都是object子类
如果不重写 将默认使用object类里的hashcode, equals等方法
假设允许多重继承,会导致方法逻辑混乱,代码不好维护(C++允许多重继承)
接口是对功能的封装,所谓技多不压身,允许一个类拥有多种技能,允许实现多个接口
接口的方法没有方法体
一个类可以实现多个接口
实现接口的类需要实现接口方法
何时该用接口, 抽象类?
概念上的从属关系,可以用抽象类、继承 比如动物类和猫类
功能上的封装,用接口,比如提供连接数据库功能的接口
语法是为设计服务,根据需求合理的选用抽象类和接口
希望空调车的第一要素是“车”,在此基础上提供“空调服务”,所以继承汽车实现空调车方案,把共性代码封装在汽车类里,同时可以继承汽车类实现taxi等的类
更关心实现空调功能的方式,把空调的共性代码以接口的形式归纳,这样能用实现空调接口的方式,在船和飞机上,安装上空调的功能