我們知道@data註解在類,為類的所有字段註解@tostring、@equalsandhashcode、@getter的便捷方法,同時為所有非final欄位註解@setter。要注意@equalsandhashcode註解與@tostring註解預設情況下是忽略父類的成員變數的,測試**如下:
@data
@noargsconstructor
@allargsconstructor
public class school
@data
class shanghai extends school
class test
}
它的列印結果是:
true
shanghai(type=a)
shanghai(type=a)
在此可以發現,上述的兩個例項沒有對比父類的成員變數是否相同,僅僅對比的type欄位的值,所以是true。同理,tostring方法是不會列印父類的成員的。
使父類成員變數參與到邏輯中
@data
@tostring(callsuper = true)
@equalsandhashcode(callsuper = true)
class shanghai extends school
列印結果:
true
shanghai(super=school(id=1, name=上海大學, age=null), type=a)
shanghai(super=school(id=2, name=華東師範, age=null), type=a)
小結
由上述的**演示,我們可以知道,在類繼承的情況時應注意@data註解不會涉父類的成員的坑,需要加callsuper = true的引數
Java中 元素的繼承,子類屬性覆蓋父類屬性的例項
子類原始碼 package jason public class subdemo extends basedemo public void accessbase public static void main string args 父類原始碼 package jason public class ...
python類屬性的應用 子類繼承可以節約空間
子類繼承了父類 如果子類共用一些資料,可以考慮把這個資料處理為負類的類屬性 並且當腹內的這個類屬性發生變化的時候,所有的脂類都可以獲得 詳細情況可以看下面的例子 class basedata data 3,4 class dataone basedata pass class datatwo bas...
java繼承extend後子父類屬性方法特點解析
示例 class book 預設的構造方法,當子類不繼承父類的構造方法時,父類需要有這樣的構造方法 book void show public static void main string args class combook extends book override void show 輸出結...