物件導向三大屬性

封裝
主要是隱藏物件的屬性,僅對外公開介面的部分,其餘部分不允許修改,是為保護程式的一個手段。

多型
分為兩種多型
一種是方法的過載,是指同一類有多個同名的方法,但是由於引數不同因此編譯時可以確定呼叫哪個方法。
一種是方法的覆蓋,同樣的方法中父子類別可以有不同的表現形式

繼承
繼承父類別的動作以及變數,不能變更被設定為private的變數

public class A { public String show(D obj) { return ("A and D"); } public String show(A obj) { return ("A and A"); } } public class B extends A{ public String show(B obj){ return ("B and B"); } public String show(A obj){ return ("B and A"); } } public class C extends B{ } public class D extends B{ } public class Test { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.println("1--" a1.show(b));
// a1 是 A 找尋Aclass中的show,b 是 new B() B extends A 因此算在A obj內 System.out.println("2--" a1.show(c)); // a1 是 A 找尋Aclass中的show,c 是new C() C extends B 因此算在A obj內
System.out.println("3--" a1.show(d)); // a1 是 A 找尋Aclass中的show,d obj 是 A內的方法
System.out.println("4--" a2.show(b)); // a2 是 A 找尋Aclass中的show,b 是 new B() B extends A 是 A obj 而由於 A class 被 B class覆寫
//因此優先使用Bclass中的show(A obj) System.out.println("5--" a2.show(c));
// a2 是 A 找尋Aclass中的show,c 是 new C() C extends B 是 A obj 而由於 A class 被 B class覆寫
//因此優先使用Bclass中的show(A obj)
System.out.println("6--" a2.show(d)); // a2 是 A 找尋Aclass中的show,d 是 new D() 在Aclass的方法
System.out.println("7--" b.show(b)); // b.show(b obj) 找到方法 輸出 System.out.println("8--" b.show(c)); // c 是 new C() extends B 因此算在b.show(b obj)內 System.out.println("9--" b.show(d)); // d 雖然沒有在 Bclass 內 但是Bclass有繼承Aclass中的屬性,算是擴充(extends)
//因此同樣可以找到'方法關於show(d obj)的部分 雖然是在Aclass } } 1--A and A 2--A and A 3--A and D 4--B and A 5--B and A 6--A and D 7--B and B 8--B and B 9--A and D


try catch的定義
是用於當程式出現bug時可以順利執行的動作。
當try失敗的時候,catch可以抓到Exception後還是能讓程式正常運行。



留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

javascript 更改屬性及創建標籤