1、继承的好处:(1)代码的复用(2)代码的扩展
2、什么情况用继承?
(1)从上而下:当我们新定义一个类型时,发现已经存在某个父类,父类中所有的特征(属性、方法)在是新定义的这个类的特征,我们可以选择继承现有的类,实现代码的复用。这里,要注意它们是is-a的关系。
(2)从小而上:当我们声明了多个类,这些类有共同的特征,那我们可以抽取出一个公共的父类,可以简化代码,同时又可以使用公共的父类来统一管理众多的子类的对象。
【修饰符】 class 子类 extends 父类{ }
子类:subclass,又称为派生类
父类:superclass,又称为基类、超类
4、继承的特点
(1)父类的所有的属性和方法都会继承的子类中
A:从可访问性角度来说:父类私有的在子类中不可见,无法直接使用,好像没有继承一样;
B:从事物的特征来说:父类私有的也会继承到子类中,在子类对象时,仍然要分配对应的的内存。
(2)父类的构造器”不会“继承到子类中
(3)在子类的构造器中一定要调用父类的构造器。
如果你没有写super()或super(实参列表)这样语句,默认就是调用了父类的无参构造。
如果你写了super()或super(实参列表)这样的语句,super()对应父类的无参构造,super(实参列表)对应父类的有参构造。
如果父类没有无参构造,那么必须在子类的构造器中要手动使用super(实参列表)明确调用父类的哪个有参构造。
(4)Java中只支持单继承
(5)Java中支持多层继承,即父类还可以有父类。
(6)一个父类可以同时有多个子类,子类还可以有子类
(7)子类可以扩展父类没有的特征(属性、方法)
(8)子类还可以“重写”父类的方法
5、方法的重写(Override)
当子类继承了父类的方法,如果这个方法的实现不适用于子类时,我们子类就可以选择重写。
要求:
(1)方法名称:必须相同
(2)形参列表:必须相同
(3)返回值类型:
基本数据类型和void:必须相同
引用数据类型:<=
(4)权限修饰符:>=
被重写的方法不能是private的,跨包不能是缺省的
(5)其他修饰符:
不能是static和final
What is different between Overload and Override?
Overload:方法的重载,同一类中出现了方法名称相同、形参列表不同的两个或多个方法。和返回值类型无关。
Override:方法的重写,如上。