JAVA學習 物件導向之繼承 多型

2021-08-29 02:34:43 字數 1906 閱讀 7253

這週六我們學習了物件導向的一些知識,包含繼承和多型的。

以下是我學過後的心得總結:

即將構造方法,成員變數,成員方法封裝在一起,形成乙個類class檔案,實現呼叫。

現在我們來看乙個**,它結合了繼承的運用,同時體現了super和this的區別。

從上面的結果看出來子類 zi 繼承了父類 fu ,test方法最後new了乙個子類物件zi用它呼叫了其自身的show方法和hehe方法,在子類中hehe方法通過this和super方法呼叫訪問fu方法,this是在自己類中找不到了,所以去父類中去找fu方法,super則是直接去父類中尋找fu方法

class fu 

public fu()

}class zi extends fu

public zi()

}public class test8

static

public static

void

main

(string[

] args)

}

實驗結果:

由上面的實驗結果我們可以看出,相同等級下,構造**塊優先於構造方法執行,每建立一次物件,都要執行,而靜態**塊,隨著類的載入而載入,只執行一次。

cat c=new cat(); //貓可以是貓的型別。

animal a=new cat(); //貓也是動物的一種

而向下轉型也是有風險的,時常不注意時就會犯型別轉換異常的錯誤,下面我們為您用乙個例子來看看空指標異常的錯誤原理。

//父類定義fu

public class fu

}//子類定義zi,同時定義了子類獨有的方法zimethod()

public class zi extends fu

//提供乙個子類獨有的方法

public void

zimethod()

}//子類定義son,同時定義了子類獨有的方法sonmethod()

public class son extends fu

**public void

sonmethod()**}

按照多型的特性,父類引用指向子類的方法,父類不能使用子類的特有方法,我們需要向下轉型。

從以上結果我們可以看出,這個測試類就犯了型別轉換異常,而原理就是

fu = new son();

fu.show();

son son = (son) fu;

在這裡我們先把fu物件向下轉型為了son型別的物件,而在後面我們又

zi zi1 = (zi) fu;

zi1.zimethod();

要把fu物件向下轉型為zi類物件,而它在上面已經被轉型為son的物件,son和zi都屬於子類,不存在直接的繼承關係,所以無法轉型,而我們新定義的

fu fu1 = new zi();

fu1就可以向下轉型為son,從而呼叫son特有的方法sonmethon();

Java學習 物件導向之多型

多型的概念 多型指的是某乙個事物,在不同時刻表現出來的不同狀態。在物件導向語言當中,其表現的是介面的不同實現方式。也就是說允許父類的引用指向子類。舉個例子 dog dog new dog animal an new dog 我們設計乙個dog類,將其物件new出來,用它本身的引用去指向。當然我們也可...

java物件導向的封裝 繼承 多型案例

person父類 public class person public person string name,int age public string getname public void setname string name public intgetage public void seta...

java物件導向和類,繼承和多型

1.方法 定義方法 1 public string getname setname 沒有方法沒有返回值所以用void 方法名稱首字母小寫,後面的每個字母大寫。括號內是引數列表 this 方法內部可以使用隱式變數this,this指當前例項,this,field可以訪問當前例項字段。2 中不能省略th...