继承的作用
解决代码重复问题
子类继承父类可以扩展已有类的功能
继承可以把父类的内容拿到子类,这样子类需要的一些与父类重复的内容,就不需要要重新写了
个人认为用扩展代替继承这个词更好。
我们看一下这个图能够很好的展示关系
这里需要说明一点虽然子类继承了父类的私有成员,但是子类不具有访问这些成员的权限,比如上图中的name,正常的一个类中我们可以通过this关键字来访问这个属性,但是这是继承自父类的私有属性,虽然子类中具有这个属性,但是子类是无法通过this来访问这个属性的,只能通过父类的非私有方法来访问!!!很关键!
java中继承的限制,只能单继承,不能多继承,但可以多层继承即继承的类也继承于其他类
继承的访问限制:
子类不允许调用父类的私有成员,但可以调用非私有的成员,即可以调用非私有方法来调用私有成员。
子类对象的实例化过程
理解:
要构造子类对象,就必须先构造出父类对象。
那么构造子类时,是如何构造父类的?
子类的构造方法都会隐含有一句super()语句,且在第一行,当构造子类时,便会调用super方法构造父类对象
方法覆写的限制
方法覆写时必须考虑到权限问题即要覆写的方法的权限不能比父类的方法权限小
举例父类方法是public则子类必须是public
错误例子:
需要注意的是无法通过default方法来覆写private方法
覆写与重载的区别
如上图所示
super的使用
调用父类的在子类中被覆写的方法。
super可以明确表示方法来之父类,可以通过super来表示一个父类的对象来调用父类中的方法,注意super既然是个对象那么在外部肯定是无法调用起private成员的.
在构造子类对象时,若调用有參构造,那么父类也必须是有參构造,因此此时需用super(参数)来构造。
如图所示:
对于super关键字的理解:
super出现在继承关系中,在子类中来明确表示一个父类对象,如同this表示当前对象一样,他表示一个父类的对象。
附上this和super的区别图
思考
this必须放在首行,super也必须放在首行,那就表面super和this构造方法不能同时使用,在实际的开发中一般在子类的无參构造方法中调用super()
PS:图片资料来自mldnjava****