類的重載
在同一個(gè)類中,允許同時(shí)存在多個(gè)同名方法,只要這些方法的參數(shù)個(gè)數(shù)或類型不同即可。
// 向上轉(zhuǎn)型:將子類對(duì)象看做是父類對(duì)象 class A{ public static void draw(A a){ //A的靜態(tài)方法 System.out.println("調(diào)用該方法,draw一個(gè)A類的圖像"); } } public class Parallelogram extends A{ public static void main(String[] args) { Parallelogram b = new Parallelogram(); draw(b); //調(diào)用父類A的方法,draw一個(gè)A的子類的圖像 } }
// 向上轉(zhuǎn)型 class A{ public static void draw(A a){ //A的靜態(tài)方法 System.out.println("調(diào)用該方法,draw一個(gè)A類的圖像"); } } public class Parallelogram extends A{ public static void main(String[] args) { A a = new Parallelogram(); //將子類對(duì)象看作是父類對(duì)象進(jìn)行創(chuàng)建 // Parallelogram c = a; //不能父類的對(duì)象直接被賦值給子類 會(huì)報(bào)錯(cuò) Parallelogram c = (Parallelogram) a; // 將父類對(duì)象通過顯示類型轉(zhuǎn)換為子類后,可被賦值給子類的對(duì)象 draw(c); } }
public class Test { public static void main(String[] args) { A a1 = new A1(); a1.Eat("a1","ffa1"); A1 aa1 = (A1)a1; aa1.Eat("aa1","ffaa1"); } } class A{ public void Eat (String nm,String ffa){ System.out.println(nm+":方法為"+ffa); } } class A1 extends A{ } /* a1:方法為ffa1 aa1:方法為ffaa1 */
instanceof關(guān)鍵字
判斷父類對(duì)象是否為子類的實(shí)例,或者某個(gè)類是否實(shí)現(xiàn)了某個(gè)接口。
public class Test { public static void main(String[] args) { A a1 = new A1(); a1.Eat("a1","ffa1"); if (a1 instanceof A1) { System.out.println("a1是A1的實(shí)例"); A1 aa1 = (A1)a1; aa1.Eat("aa1","ffaa1"); }else{ System.out.println("a1不是A1的實(shí)例"); } } } class A{ public void Eat (String nm,String ffa){ System.out.println(nm+":方法為"+ffa); } } class A1 extends A{ } /* a1:方法為ffa1 a1是A1的實(shí)例 aa1:方法為ffaa1 */
浙公網(wǎng)安備 33010602011771號(hào)