在这里用到的是public , 所以是公共的,不必用get或set再调用 , 但此时要前面加上对象名
但如果这样写------------加上static 表明students这个类所有的对象都共享这个老师的姓名
继承
java中提供一个关键字,extends------用这个关键字可以将一个类和另一个类联系起来,建立继承关系
public class类名extends类名(){}
左边的类名称为子类 右边的为父类
继承的好处 可以把之类中重复的代码抽取到父类中,提高了代码的复用性
子类可以在父类的基础上增加其他功能,使子类更加强大
什么时候用继承:当类与类之间存在相同(共性)的内容时满足子类是父类的一种,就可以考虑使用继承,来优化代码
java只支持单继承,不支持多继承,到那支持多层继承
单继承:一个子类只支持一个父类
不支持多继承:子类不能有多个父类
java所有的类都直接或间接的继承与objec类构造方法是否可以被继承?
继承的内存图
继承中成员变量的访问特点---------------就近原则
其中this----super
this------------是在本类中去找,找不到在到父类
super------------直接到父类中去找
在子类中最多只能调用一个super,连续调用就会出错
方法的调用
方法的重写:
当父类的需求不能满足子类的需求时,需要进行方法的重写
书写格式: 在继承体系中,子类出现了和父类一样的方法声明,我们就称子类的这个方法是重写
@Override是放在重写后的方法上的,校验子类重写时 是否正确
且@Override是写给程序员和虚拟机看的
方法重写时需要注意和要求:
1:方法重写的名称\形参列表必须和父类一致
2:子类重写父类方法时,访问权限子类必须大于等于父类(空着不写<protected<public)
3:子类重写父类方法时,返回值类型子类必须小于父类
4:子类方法在重写时尽量和父类保持一致
5:只有被添加到虚方法表中的 才能被重写
构造方法的访问特点:
父类的构造方法不能被子类继承
子类的所有构造方法 默认先访问父类的无参构造,再执行自己
reason:子类在初始化时,有可能会使用到父类的 数据,如果父类没有完成初始化,子类将无法再使用父类的数据
子类初始化之前,一定要先调用父类的构造方法先完成父类的数据空间初始化
如何调用父类的构造方法
子类的构造方法第一行默认语句都是:super(),不写也存在,且必须都在第一行
如果想调用父类的有参构造必须手动书写super进行调用