继承(面向对象的三大特征之一,继承是多态的前提,没有继承,就没有多态)
继承就是指子类继承父类的行为特征,使得子类具有父类的相同的内容
继承主要解决的问题就是:共性抽取(有些代码存在重复,导致代码量大且臃肿)
特点:
1.子类可以拥有父类的内“内容”
2.子类还可以拥有自己专有的内容
类的继承格式
在java中可以通过extends关键字表示继承
继承重名的三种变量
局部变量: 直接写成员变量
本类的成员变量: this.成员变量名
父类的成员变量 super.成员变量
---------------------------------------------------------------------------------------------------
方法的重写(在重写方法前加入override注解)
为什么在继承中需要继承的重写?
当父类的不满足需求的时候,这个时候就需要定义一个新的子类来重复利用父类的共性内容,并添加新的内容
方法重写的原则
1.保证父子类的方法名跟参数列表相同
2.子类方法的返回值必须小于等于父类返回值范围
3.子类方法的权限必须大于等于父类方法的权限
方法的重载跟方法重写的区别?
方法重载:overrload(解决了功能相同方法名不同的问题:方法名相同,参数列表不同)
方法重写:oveerride(解决了父类不满足当前需求,子类扩展父类的问题:方法名跟参数相同,方法体不同)
二者无关系,只是名字相似
继承的三个特点:
1.单继承
2.可以多级继承
3.一个父类可以给多个子类继承,一个子类的父类却是唯一的
继承内存分析
先加载父类跟子类的字节码class文件到方法区中,然后先在堆中创建父类,再创建子类,并把子类的地址给予在栈中创建的对象名
(继承中,构造器是先调用父类的构造器,再调用子类的构造器,有同名方法先调用子类方法,如果子类没有,再调用父类)