多态性和instanceof关键字的使用
man和woman类都要是person类的子类,然后对person类的方法要进行重写,这是多态性的条件,然后
此时这个对象只能调用重写父类的方法------------->虚拟方法调用
输出的结果是子类重写方法运行的结果,即编译看左边,运行看右边。
编译时看左边父类的哪些方法在子类重写过,而运行时结果看子类重写的方法。这个叫做虚拟方法调用
进入的是person的eat、walk方法体内,因为是person类体现的多态性,方法就是体现多态性的一个途径。
明确:子类可以获取父类的私有属性和方法,因为像属性的话,在父类中设置get和set方法,然后就可以调用get和set方法修改属性和调用属性。
将父类的私有方法放在一个公有方法里面,就可以通过调用共有方法来间接调用私有方法
这些私有的属性和方法都是子类对象加载父类来的,即每个子类对象在堆结构中都有父类的属性和方法,不管是共有的还是私有的,这样就体现了继承性
同时,属性是不能体现多态性的,所以,父类和子类定义了同一个属性时,调用
即子类定义了与父类同名的的属性,这个属性不会覆盖父类的同名属性,即编译运行都看左边
调用时不能调用子类特有的属性和方法,但是要明确一点,声明对象的时候,子类的那些属性都被加载进来了,只不过因为声明的person类的类型,导致那些子类特有属性和方法都被屏蔽了。但是在堆内存都有的

浙公网安备 33010602011771号