1.
**當中體現多型性,其實就是一句話:父類引用指向子類物件。
格式:父類名稱 物件名 = new 子類名稱();
或者:介面名稱 物件名 = new 實現類名稱();
public class multi
}public class fu
public void methodfu()
}public class zi extends fu
}
2.
在多型的**當中,成員方法的訪問規則是:
看new的是誰,就優先用誰,沒有則向上找。
口訣:編譯看左邊,執行看右邊。
對比一下:
成員變數:編譯看左邊,執行還看左邊。
成員方法:編譯看左邊,執行看右邊。
public class multimethod
}public class fu /*extends object*/
public void method()
public void methodfu()
}public class zi extends fu
@override
public void method()
public void methodzi()
}
3.
訪問成員變數的兩種方式:
1. 直接通過物件名稱訪問成員變數:看等號左邊是誰,優先用誰,沒有則向上找。
2. 間接通過成員方法訪問成員變數:看該方法屬於誰,優先用誰,沒有則向上找。
public class multifield
}
4.
向上轉型一定是安全的,沒有問題的,正確的。但是也有乙個弊端:
物件一旦向上轉型為父類,那麼就無法呼叫子類原本特有的內容。
解決方案:用物件的向下轉型【還原】。
public class demo
}public class dog extends animal
public void watchhouse()
}public class cat extends animal
// 子類特有方法
public void catchmouse()
}public abstract class animal
5.
如何才能知道乙個父類引用的物件,本來是什麼子類?
格式:物件 instanceof 類名稱
這將會得到乙個boolean值結果,也就是判斷前面的物件能不能當做後面型別的例項。
public class demo02instanceof
// 判斷一下animal本來是不是cat
if (animal instanceof cat)
givemeapet(new dog());
}public static void givemeapet(animal animal)
if (animal instanceof cat)
}}
public inte***ce usb
public class computer
public void poweroff()
// 使用usb裝置的方法,使用介面作為方法的引數
public void usedevice(usb usb) else if (usb instanceof keyboard)
usb.close(); // 關閉裝置
}}// 鍵盤就是乙個usb裝置
public class keyboard implements usb
@override
public void close()
public void type()
}// 滑鼠就是乙個usb裝置
public class mouse implements usb
@override
public void close()
public void click()
}public class demomain
public static void method(double num)
}
java小知識之多型
向上轉型 子類轉化為父類 為本身,向下轉型 父類轉化為子類 為小的 instanceof 它的作用是判斷其左邊物件是否為其右邊類的例項,返回boolean型別的資料。例子 package lianxi public class override public static void show ani...
java經典小知識
math.round 11.5 返回 long 12,math.round 11.5 返回 long 11 tring s new string xyz 建立了幾個string object?兩個物件,乙個是 xyx 乙個是指向 xyx 的引用物件s。short s1 1 s1 s1 1 有什麼錯?...
Java經典小知識
math.round 11.5 等於多少?math.round 11.5 等於多少?math.round 11.5 返回 long 12,math.round 11.5 返回 long 11 tring s new string xyz 建立了幾個string object?兩個物件,乙個是 xyx...