引言
继承是面向对象语法的三大特征之一,通过继承父类已有的变量和方法,使编程效率得到提升。其实我们在了解到这个概念之前就已经使用了很多有关继承代码了。
就比如这个equal,是通过继承Object的来得,每个类都会默认继承Object。 也就是说,即使没有主动使用继承,我们也已经在享用它的便利了。
代码讲解
1.继承成员变量
运行结果
可以看到我们调用的是class.dog,里面没有内容,但是因为继承了class.pet里的成员变量,成功输出其中的内容。但如果pet被声明为private的话就行不通了。
2.继承成员方法
运行结果
3.重写
重写和隐藏父类方法
子类继承了父类中的所有成员及方法,但在某种情况下,子类中该方法所表示的行为与其父类中该方法所表示的行为不完全相同,例如,在父类语言中定义了说话这个方法,而在子类中说话的方法是不同的:外国人说英文,中国人说中文,这时我们就需要重写或隐藏父类的该方法。
当一个子类中一个实例方法具有与其父类中的一个实例方法相同的签名(指名称、参数个数和类型)和返回值时,称子类中的方法“重写”了父类的方法。
运行结果
4.super关键字
1、super可以用来引用直接父类的实例变量。
2、super可以用来调用直接父类方法。
3、super()可以用于调用直接父类构造函数。
运行结果
注意事项:
- 子类不能选择性继承父类;
- Java不支持多重继承,但一个类可以实现多个接口,从而克服单继承的缺点;
- 构造方法不会被子类继承,但可以从子类中调用父类的构造方法。