1. 程式人生 > >Java繼承是復制還是共用?答案共用

Java繼承是復制還是共用?答案共用

super() 賦值 改變 父類 通過 屬性 方法 nim 構造方法

繼承是復制還是共用?例如 Dog類繼承Animal類,在Dog中的屬性修改,Animal中的屬性也會一起改變嗎?如果用Dog和Animal分別實例化對象,dog和animal,這兩者的屬性是公用還是各占內存,毫無關系?另外要對子類繼承的屬性賦值,通過super(),最終跳到父類構造器,此時,是不是創建了一個父類對象?

1、共用更恰當,因為父類的一些私有方法和私有屬性是不會被繼承的,繼承之後,子類可以共用父類的公有屬性和公有方法,,
2、Dog中如果沒有重新定義父類已有的同名屬性,則修改公有屬性就是修改父類的公有屬性,即父類的屬性會一起改變,,
3、如果兩者都實例化,肯定是兩個不同的對象,內存地址不可能共用的,就算是Dog實例化多次也是只是多個不同的對象,內存地址是不一樣的,,
4、super其實就是一個區分標誌,不會新建對象的,,,super()只是調用父類的無參構造方法,因為子類也有無參構造方法,,只要是子類要調用在父類中有同名同參的方法或者同名的屬性,都要用到super來區分,,

Java繼承是復制還是共用?答案共用