798
技術社區[雲棲]
JAVA 【引用類型】和【對象類型】在【繼承】中的異同
介紹
JAVA 【引用類型】和【對象類型】在【繼承】中的異同,這個問題自己整理過N次,也被人當菜鳥問過N次。所以,在此簡單整理一下,以供大家分享。
- 在繼承關係中,一般成員變量是根據引用類型
- 在繼承關係中,靜態成員變量是根據引用類型
- 在繼承關係中,一般方法是根據對象類型
- 在繼承關係中,靜態方法是根據引用類型
注意
靜態成員變量,靜態方法是基於類的,本文為了測試觀察,所以,會用對象去引用靜態成員變量和靜態方法。
Super Class:
package shuai.study.inherit;
public class SuperClass {
public String commonString = "SuperClass Common String";
public static String staticString = "SuperClass Static String";
public int otherCommonInt = 0;
public static int otherStaticInt = 10;
public void commonMethod() {
System.out.println("SuperClass Common Method: " + commonString);
}
public static void staticMethod() {
System.out.println("SuperClass Static Method: " + staticString);
}
public void otherCommonMethod() {
System.out.println("SuperClass Other Common Method: " + otherCommonInt);
}
public static void otherStaticMethod() {
System.out.println("SuperClass Other Static Method: " + otherStaticInt);
}
}
Suber Class:
package shuai.study.inherit;
public class SuberClass extends SuperClass {
public String commonString = "SuberClass Common String";
public static String staticString = "SuberClass Static String";
@Override
public void commonMethod() {
System.out.println("SuberClass Common Method: " + commonString);
}
public static void staticMethod() {
System.out.println("SuberClass Static Method: " + staticString);
}
}
Test Class:
package shuai.study.inherit;
public class Test {
public static void main(String[] args) {
SuperClass superClass = new SuberClass();
// Common member variable is according to quote type
System.out.println(superClass.commonString);
// Static member variable is according to quote type
// Generally we invoke static member as SuperClass.staticString, because static method & variable is based on class
System.out.println(superClass.staticString);
// Common method is according to object type
superClass.commonMethod();
// Static method is according to quote type
// Generally we invoke static method as SuperClass.staticMethod(), because static method & variable is based on class
superClass.staticMethod();
System.out.println("==================================================");
SuberClass suberClass = new SuberClass();
// Inherit member variable from super class
System.out.println(suberClass.otherCommonInt);
System.out.println(SuberClass.otherStaticInt);
// Inherit method from super class
suberClass.otherCommonMethod();
SuberClass.otherStaticMethod();
// Self method
suberClass.commonMethod();
SuberClass.staticMethod();
}
}
Output:
SuperClass Common String SuperClass Static String SuberClass Common Method: SuberClass Common String SuperClass Static Method: SuperClass Static String ================================================== 0 10 SuperClass Other Common Method: 0 SuperClass Other Static Method: 10 SuberClass Common Method: SuberClass Common String SuberClass Static Method: SuberClass Static String
最後更新:2017-04-03 07:57:07
上一篇:
hi3531 SDK 編譯 kernel, 修改 參數 .
下一篇:
ORACLE union order by
toggbutton
ubuntu操作係統80端口不能使用
阿裏雲前端周刊 - 第 23 期
展(水樹奈(閆(中華人民共和國稅收征收管理法(主席令第四十九號) 2015年8月15日 - 會關於修改〈中華人民共和國文物保護法〉等十二部法律的決定》(主席令第...第八十九條 納稅人、扣繳義務人可以委托稅務代理人代為辦理稅務事宜。 第...)雷)奈)開相
Serverless 場景下的日誌收集和分析實踐
C# 轉義字符
Eclipse 插件之Spring IDE
Android 資源文件中的符號含義與說明
Android開發:如何安全的中止一個自定義線程Thread
這是怎麼了?蘋果iPhone 5又出問題