方法的重写

方法的重写(override)
子类可以继承父类的方法,在继承时,我们可以在子类中
编写与父类中的方法名相同,参数列表也相同的方法。这就是
重写。

(1)父子类关系,方法名相同,参数列表相同
(2)返回值类型可以相同,也可以不同[
        子类方法的返回值类型必须是父类方法的返回值类型的子类]    

父类型的变量可以引用子类型的对象
如:
Animal a = new GoldFish();
Animal类型的变量a引用了子类型GoldFish的对象
符合人类的思维:
这条金鱼是动物

编译期绑定:
在编译过程中,变量只能调出本类型中的方法
在编译期间, 方法静态绑定到变量上
运行期绑定
在运行过程中,真正执行的方法的逻辑与对象的类型有关系。
简单说成:方法在运行期间,动态绑定到对象上。

成员变量的调用与变量的类型有关系(与编译期和运行期无关)

【在创建子类对象时,在内存中会不会产生父类对象??】
【答案1: 会产生,没有父类对象,哪来的子类对象】
【答案2: 不会产生,创建子类对象时,子类对象的成员变量包含两部分:
一部分为从父类中继承过来的
在成员变量前有默认的super.
一部分是自己本类中的
在成员变量前有默认的this.

    如果子类中独有的与继承过来的成员变量重名时,必须
    显式指定使用super.或者是this.
    如果子类中没有与继承过来的成员变量相同名时,我们可以
    隐式不写,或者使用super.与this.其中任意一个。         

     为了避免不必要的麻烦,子类的成员变量尽可能不要与父类的
     成员变量同名       

猜你喜欢

转载自blog.csdn.net/dizi1802/article/details/81462973