面向对象进阶
继承
面向对象三大特征:封装,继承,多态。
封装:对象代表什么,就封装对应的数据,并提供数据对应的行为
继承:java中提供一个关键字extends,可以让一个类和另一个类建立起继承关系
public class Student extends Person{}
#Student称为子类(派生类)
#Person称为父类(基类或超类
*使用继承的好处:
01.可以把多个子类中重复的代码抽取到父类中,提高代码的复用性
02.子类可以在父类的基础上,增加其他的功能,使子类更强大
*什么时候使用子类?
当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码
*继承的格式
public class 子类 extends 父类{}
*子类能继承父类中的那些内容(内存图/内存分析工具)
public private
构造方法: 不能 不能
成员变量: 能 能
成员方法: 能 不能
特点:
java只支持单继承,不支持多继承,但支持多层继承
#单继承:一个子类只能继承一个父类
#不支持多继承:子类不能同时继承多个父类
#多层继承:子类A继承父类B,父类B继承父类C
*每一个类都直接或间接的继承于Object
继承中:
1.成员变量的访问特点:(就近原则)
//定义父类public class Fu{String name="Fu";}
//定义子类public class Zi extends Fu{
String name="Zi";
//在子类中定义一个方法public void ziShow(){
String name="ziShow";syso(name);//输出ziShow
syso(this.name);//输出Zi
syso(super.name);//输出Fu
}
}
2.方法的重写:
当父类的方法不能满足子类现在的需求时,需要进行方法重写
书写格式:
在继承体系中,子类出现了和父类中一模一样的声明,就称子类这个方法是重写的方法
3.@Override重写注释:
*@Override是放在重写后的方法上,校验子类重写时语法是否正确
*加上注释后如果有红色波浪线,表示语法错误
*建议重写方法都加@Override注释,代码安全,优雅
*如果发生重写,则会覆盖原方法
4.方法重写注意事项和要求
*重写方法名称,形参列表必须与父类一致
*子类重写父类方法时,访问权限子类必须大于等于父类
*子类重写父类方法时,返回值类型子类必须小于等于父类
*建议重写方法时尽量和父类保持一致
*只有被添加到虚方法表中的方法才能被重写