9月12日 自学问题
1.再类的多个构造器中,至少有一个类的构造器使用类super(行参列表),调用父类的构造器,在构造器的第一行
在第一行的原因:子类继承父类,继承父类的属性和方法,因此子类必须知道父类如何对对象进行初始化
2.super调用父类的方法或属性(属性 或 方法重名是使用),一般用于方法重写中调用
3.多态性:虚拟方法的使用 (接口 中 应用) 多态性new的一定是A的子类(直接子类或者间接子类都行) A = new a
多态性使用条件:要有继承关系、要有方法的重写
4.对象的多态性只适用于方法,不适用于属性(编译和运行都看左边)
5.多态是运行时行为
6.重载和重写
1)具体细节的差距
2)方法的重载在编译器就确定了要调用的方法:静态绑定、早绑定
方法的重写只有在方法调用的那一刻才确定要调用的方法:动态绑定、晚绑定 (重写可以多态)
3)方法的重写
子类方法名和行参列表和父类一样,
子类修饰符大于等于父类
子类返回值等于父类,或是父类的子类型(父类返回值为void时,子类也是void)
javase学完自己画思维导图
7.有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型, 导致编译时只能调用父类中声明的属性和方法,子类中特有的属性和方法不能调用
调用子类特有的属性和方法:强转(类型)
为了避免强转错误 使用 instanceof进行判断 if(a instanceof A) {} 如果判断是true则执行强转
如果 a instanceof A 返回true,a instanceof B也返回true,则类B是类A的父类
8.实例变量中,子类和父类定义了相同的实例变量(属性),这个实例变量不会覆盖父类中定义的实例变量 编译运行都看左边

浙公网安备 33010602011771号