JAVA中pin什么意思_java语言中的多态概述
多態:一個對象相應著不同類型
多態在代碼中的體現:父類或接口的引用指向其子類對象。
多態的優點:
提高了代碼的擴展性,前期定義的代碼能夠使用后期的內容。
多態的弊端:
前期定義的內容不能使用后期子類中定義的特有內容。
多態的前提:
1,必須有關系,(繼承。實現)。
2,要有覆蓋。
Animal a =new Cat();
自己主動類型提升,貓對象提升了動物類型。可是特有功能無法訪問。能夠限制對特有功能的訪問。
專業講:向上轉型。將子類型隱藏。就不能使用子類的特有方法。
假設還想用詳細動物貓的特有功能,能夠將該對象進行向下轉型。目的是為了使用子類中的特有方法。
Cat c = (Cat) a;
注意:對于轉型,自始至終都是子類對象在做著類型的變化。
if (a instanceof Cat){
Cat c=(Cat) a;
}
instanceof:用于推斷對象的詳細類型(類或是接口)。僅僅能用于引用數據類型推斷。
通常在向下轉型前用于健壯性的推斷。
多態時,成員的特點:
1。成員變量
編譯時:參考引用型變量所述的類中是否有調用的成員變量,有,編譯通過,沒有編譯失敗。
執行時:參考引用型變量所述的類中是否有調用的成員變量,并執行該所屬類中的成員變量。
簡單說:編譯和執行都參考等號左邊。
2,成員函數(重點)非靜態
編譯時:參考引用型變量所述的類中是否有調用的成員函數,有,編譯通過,沒有編譯失敗。
執行時:參考的是對象所述的類中是否有調用的函數。動態綁定
簡單說:編譯看左邊,執行看右邊。
樣例:
class Outer
{
void method(){
Object obj =new Object(){
public void show(){
System.out.println("show run");
}
};
obj.show();//錯誤提示,找不到符號
//由于匿名內部類這個子類對象被向上轉型成了Object類型。這樣就不能再使用子類的特有方法了
}
}
class InnerClass
{
public static void main(String [] args)
{
new Outer().method();
}
}
3,靜態函數
編譯時:參考引用型變量所述的類中是否有調用的靜態方法,有,編譯通過。沒有編譯失敗。
執行時:參考引用型變量所述的類中是否有調用的靜態方法。
簡單說:編譯和執行都看左邊。
事實上對于靜態方法,是不須要對象的。直接用類名調用就可以。
總結
以上是生活随笔為你收集整理的JAVA中pin什么意思_java语言中的多态概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 能够降低85%的能耗 IBM和三星的新芯
- 下一篇: 史诗级漏洞Log4j2引发科技巨头自查: