继承指什么:
继承指一个对象直接使用另一对象的属性和方法,子类可以拥有父类的所有属性和方法,也可以扩展定义自己特有的属性,增加新方法和重新定义父类的方法。 当类与类之间存在共性内容且满足子类是父类的一种,就可以考虑使用继承。
extend关键字:
java中的extends关键字,可以建立起类与类之间的继承关系
publc class Student extends Person{}
如上述代码,就将两个类建立起继承关系Student类是子类,person类是父类
继承特点:
1.一个子类只能继承一个父类
2.支持多层继承
3.每一个类间接继承于object类
4.子类不能调用父类的非私有的成员
子类对父类继承的内容
1.成员变量的继承
1.子类能继承父类的成员变量,私有的成员变量和非私有的成员变量都能继承
2.子类不能直接使用父类的私有的成员
3.子类要使用父类的私有变量要用get和set方法。
访问特点
1.就近原则
public clss fu{ String name="fu"; } public class zi extends fu{ String name="zi"; public void zishow() { System.out.println(name); System.out.println(this.name); System.out.println(super.name); }
打印的是zi,zi,fu
如图所示,若主函数中,使用对象调用变量,将根据对象类型到对应的地址
找到变量,找不到再逐级往上找
2.成员方法的继承
为了便于调用方法,java设立了虚方法表,每个类都有自己的虚方法表,将常用的方法放在里面,继承下去。
虚方法:
1.非private
子类不能访问父类的私有化方法,除非子类通过同一父类中的非私有化方法进行间接访问
2.非static
静态方法可以被子类继承,但不能被重写。如果子类和父类中各有一个static方法,且它们的返回值类型、方法名、参数列表都相同(具有相同的签名),那么这两个static方法并不具有重写关系。
3.非final
访问特点
调用方法需要对象名。
this.方法名() 先在本类中查看方法,没有再去调用父类中继承的方法。
super.方法名()直接去父类中调用方法。
方法的重写
1.方法的重写:当父类的方法不能满足子类的需求,需要进行方法重写。..
2.方法重写的本质是将z虚方法表中的方法进行覆盖自己
3.重写方法需要将@Override加在重写方法的上面
@Override重写注释:能够报错,下图是重写方法名跟原方法名不同时。
注意事项
1.重写方法的名称,形参列表必须与父类中的一致。
2.访问权限子类>父类
3.子类重写父类方法时,返回值类型小于等于父类
4.虚方法表中的方法才能重写
3.子类构造方法的使用
父类的构造方法不会被子类继承。
为了给变量初始化,子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。
子类构造方法的第一行语句默认都是:super(),不写也在,且必须在第一行。
如果想调用父类的有参构造,必须手动调用
4.super,this使用总结
this:相当于一个形参,在调用方法时候调用,存的方法调用者的地址
super:代表父类存储空间