Java中的继承注意事项
1.子类只能继承父类所有的非私有成员(成员变量和成员方法)
2.子类不能继承父类的构造方法,但是可以通过super关键字访问父类的构造方法
继承中成员变量的关系(主要研究同名变量)
子类中的成员变量和父类中的成员比那两名称一样:
1.先在子类的局部范围寻找,有就使用。
2.在子类的成员变量查找,有就使用。
3.在父类的成员变量范围内查找,有就使用。
4.如果找不到,就报错。
super关键字
1.super 和 this的用法很像,this代表本类对象的引用,super代表父类存储空间的表示(可以理解为父类对象的引用)
2.访问父类成员变量:super.成员变量 访问本类的成员变量:this.成员变量
3.调用构造方法
访问本类构造方法:this()或this(参数) 访问父类构造方法:super()或super(参数)
4.调用成员方法
this.成员方法 super.成员方法
继承中构造方法的关系
子类所有的构造方法默认都会访问父类中的空参构造方法,想要显示调用父类的有参构造方法,super(变量名),因为子类会继承父类中的数据,可能还会使用父类的数据,所以,子类初始化之前一定要先完成父类数据的初始化。每一个构造方法的第一条语句默认都是super()。
类的静态代码块,构造代码块,构造方法的执行顺序:静态代码块->构造代码块->构造方法
继承中成员方法的关系
通过子类对象去访问一个方法,首先在子类成员方法中找,然后在父类成员方法中找,最后没有找到就抱错。
方法重写(override)
存在继承关系,子类中出现和父类中方法声明一模一样的方法。子类重写父类方法时,访问权限不能被降低,最好就一致。
final关键字
1.修饰类:为最终类,不能被继承
2.修饰成员方法,在子类中该成员方法不允许重写
3.修饰变量,在构造方法完成之前必须显示初始化一次,不能被修改。
final修饰局部变量时:修饰基本数据类型,值不能改变;修饰引用数据类型,引用的地址值不能改变,但是对象的堆内存的值可以改变。
多态
1.实现多态的条件:有继承关系,有方法重写,父类引用指向子类对象
2.成员访问特点:A.成员变量:编译看左边,运行看左边。
B.成员方法:编译看左边,运行看右边。
C.静态方法:编译看左边,运行看左边。
3.多态的转型问题
A.向上转型:父类引用指向子类对象(多态),从子到父
B.向下转型:父类引用转为子类对象(强转),从父到子
网友评论