封装
对象代表什么,就得封装对应的数据,并提供数据对应的行为。
继承
Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系。
public class Student extends Person{}
Student称为子类(派生类),Person称为父类(基类或超类)
使用继承的好处:
可以把多个子类中重复的代码抽取到父类中了,提高代码的复用性。
子类可以在父类的基础上,增加其他的功能,使子类更强大。
什么时候用继承:
当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码。
小结
1,什么是继承、继承的好处?
继承是面向对象三大特征之一,可以让类跟类之间产生子父的关系。
可以把多个子类中重复的代码抽取到父类中,子类可以直接使用,减少代码的冗余,提高代码的复用性。
2,继承的格式?
public class Student extends Person{}
3,继承后子类的特点?
子类可以得到父类的属性和行为,子类可以使用。
子类可以在父类的基础上新增其他功能,子类更强大。
继承的特点:
1,Java只能单继承:一个类只能继承一个直接父类。
2,Java不支持多继承、但是支持多层继承。
3,Java中所有的类都直接或者间接继承于Object类。
4,子类只能访问父类中非私有的成员。
子类到底能继承父类中的哪些内容?
构造方法 | 非私有(不能) | 私有(不能) |
成员变量 | 非私有(能) | 私有(能) |
成员方法 | 虚方法表(能) | 否则(不能) |
虚方法表:非static,非final,非private
继承中:成员变量的访问特点
1,继承中成员变量访问特点:就近原则
2,如果出现了重名就用this,super区分。
继承中:成员方法的访问特点
方法的重写
当父类的方法不能满足子类现在的需求时,需要进行方法的重写
书写格式
在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法。
@Override重写注释
1,@Override是放在重写后的方法上,校验子类重写时语法是否正确。
2,加上注释后如果有红色波浪线,表示语法错误。
3,建议重写方法都加@Override注释,代码安全。
方法重写注意事项和要求
1,重写方法的名称、形参列表必须与父类中的一致。
2,子类重写父类方法时,访问权限子类必须大于等于父类(暂时了解:空着<protected<public)
3,子类重写父类方法时,返回值类型子类必须小于等于父类
4,建议重写的方法尽量和父类保持一致。
5,只有被添加到虚方法表中的方法才能被重写。
继承中:构造方法的访问特点
父类中的构造方法不会被子类继承。
子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。(因为子类在初始化的时候。有可能会使用到父类中的数据,如果父类没用完成初始化,子类将无法使用父类的数据,子类初始化之前,一定要调用父类构造方法先完成父类数据空间的初始化)
如何调用父类构造方法?
子类构造方法的第一行语句默认都是:super(),不写也存在,且必须在第一行。
如果想调用父类有参构造,必须手动写super进行调用。
总结
1,继承中成员方法的访问特点:this调用:就近原则。 super调用:直接找父类。
2,什么是方法重写?
在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类的这个方法是重写的方法。
3,方法重写建议加上哪个注释,有什么好处?
@Override注解可以校验重写是否正确,同时可读性好。
4,重写方法有哪些基本要求?
子类重写的方法尽量跟父类中的方法保持一致,只有虚方法表里面的方法可以被重写。
5,方法重写的本质?
覆盖虚方法表中的方法