Java 繼承後修改的物件資料屬性到底是誰的?

2021-07-22 14:02:29 字數 704 閱讀 4800

rt,我們平時在用繼承類時,常常想為什麼父類裡的成員變數,為什麼我非要覆蓋。我專心擴充套件我的東西不是更簡約嗎?

class

aclass

bextends

a void f(a ad)

}public

class

main

}

在a中 在b中

int n / b.n實際使用的是super.n

int n int n b.n就是b.n

現在你要修改b.n,第一種情況實際更改的是super.n

第二種情況才是修改真正的b物件中的n

現在我用抽象類試一下,為了保證abastract裡資料能呼叫,為它們加上static(但是注意抽象方法是用不了static,static宣告的方法必須有方法體)

abstract

class

fuclass

ziextends

fupublic

class

test1

}

輸出結果為

299

299

12345

12345

可見也是成立的

—————————–一句話總結——————————-

物件的資料屬性 直接使用的是 最近一次覆蓋的地方和值!

C 物件繼承後的記憶體分布

1.如果父類的純虛函式沒有實現,在沒有使用的的情況下 沒有new 或者直接生成物件 編譯不會報未定義。最近將乙個類物件指標直接轉換為void 儲存到了vector中,使用時再用static cast轉換為對應的父類指標,發現在多繼承的情況下這樣會有問題。原因是此物件有多個父類,static cast...

python物件導向之資料的封裝及物件屬性的擴充套件

為了讓定義的資料型別,能使用不同的應用場景,一般情況下我們 要對當前型別的所有屬性進行封裝處理。封裝屬性之後,會提供訪問屬性資料的set get方法,書寫過程中方法中不需要新增任何限制條件,只是預留了可以新增限制條件的方法而已,後期根據專案需求進行限制和條件的完善。class goods def i...

java 繼承體系物件的構造過程

先說一下普通物件的構造過程 比如下面 public class hello 1 初始化objec的靜態變數,然後呼叫objec的靜態初始化塊 2 初始化hello的靜態變數,然後呼叫hello的靜態初始化塊 3 初始化object的例項變數,和例項 4 呼叫object的無參建構函式 5 初始化he...