1. 程式人生 > >關於子類訪問和修改父類屬性值的網上答案搜查+個人理解

關於子類訪問和修改父類屬性值的網上答案搜查+個人理解

java 怎樣永久改變父類中公有屬性的值

不太明白你要說什麼,類中的屬性一般都是private?,保證封裝性,如果你要用public?,也沒任何問題。你要在子類中該父類的屬性,不是有getter和setter?的方式改啊。

格外說一句面向物件是把所有的都看成一個物件,你肯定是子類例項化,傳參的時候可以用getter呼叫,setter改回,或者直接在子類中在多加一個臨時屬性,保證傳回引數和運算。

轉載自:https://iask.sina.com.cn/b/1SWKvCfYuLyD.html

 

個人理解:父類中的值除非是某特殊型別的值,比如全域性物件,否則是無法永久修改的,因為在每次例項化的時候都會初始化該值的值。

 

在這裡想要繼續深入瞭解還需要查閱相關原型鏈的知識。

 

子類能改變父類的屬性值麼

/*2#
樓主需要看情況實現哈!你在new一個子類物件的時候,需要先呼叫父類的相關構造器,對父類中的欄位進行初始化操作!
如果父類中的欄位的許可權修飾符宣告為private的,那麼子類將不能獲知父類中該欄位的任何資訊(就如同不存在一樣)。
別的許可權宣告情境下,如果子類定義了一個和父類同名的欄位,那麼子類例項每次獲取的都將是子類中宣告的同名欄位,
如果想要呼叫父類中的同名欄位,需要使用super關鍵字進行呼叫。當然如果子類和父類中同名欄位儲存的值不一樣,
那麼取得的值自然也是不同的(具備不同的記憶體區間)。這個時候能夠達到樓主想要的需求!!如果子類中沒有與父類同名的欄位,
那麼子類將通過繼承獲得父類的該欄位,對子類的該欄位的操作當然也會被儲存起來的!!*/

/*4#
你可以用2個子類一起繼承一個父類,然後用子類1呼叫父類的屬性,改變值,再用子類2呼叫看值改變了沒有,
明顯答案是沒有。。不可能徹底改變父類的值,如果能改變那程式都亂跑了。。。子類不能徹底改變父類的值,
只能呼叫父類的屬性重新賦值罷了。。*/