------Java教育訓練、Android教育訓練、iOS教育訓練、.Net教育訓練、期待與您交流! -------
1.多态
定義:某一類事物的多種存在形态
例:動物中貓,狗
貓這個對象對應的類型是貓類型
貓 x=new 貓();
同時貓也是動物中的一種,也可以把貓稱為動物
動物 y=new 貓();
動物是貓和狗具體事物中抽取出來的符類型
1.1多态的表現形式
父類的引用指向了自己的子類對象
父類的引用也可以接受自己的子類對象
1.2多态的前提
必須是類與類之間有關系.要麼繼承,要麼實作
通常還有一個前提:存在覆寫
1.3多态的好處
多态的出現大大的提高了程式的擴充性
1.4多态的弊端;
提高了擴充性,但是隻能使用父類的應用通路類中的成員
多态的應用:
abstract class Student
{
public abstract void study();//定義一個抽象的學生類,因為不同的班學習内容是不同的,使用抽象方法
public void sleep(){
System.out.println("sleep");
}
}
class BaseStudent extends Student
{
public void study(){//子類實作父類的抽象方法
System.out.println("base study");
}
public void sleep(){
System.out.println("base sleep");
}
}
class AdvStudent extends Student
{
public void study(){
System.out.println("adv study");
}
public void sleep(){
System.out.println("adv sleep");
}
}
class DuoTai
{
public static void main(String[] args){
Student b=new BaseStudent();
doIt(b);
}
private static void doIt(Student s){
s.study();
s.sleep();
}
}
1.5多态的出現代碼中的特點(多态使用的注意事項)
在多态中成員函數的特點:
在編譯時期:參閱引用型變量所屬的類中是否有調用的方法.如果沒有編譯失敗
在運作時期:參閱對象屬性的類中是否有調用的方法
簡單總結就是:成員函數在多态調用時,編譯看左邊,運作看右邊
面試:開發用不到
1.成員變量
class Fu
{
int num=5;
}
class Zi extends Fu
{
int num=7;
}
class DuoTai01
{
public static void main(String[] args){
Fu f=new Zi();
System.out.println(f.num);
Zi z=new Zi();
System.out.println(z.num);
}
}<strong>
</strong>
執行結果:
5
7
在多态中成員變量的特點:
無論編譯和運作,都參考左邊(引用型變量所屬的類)
2.靜态方法:
class Fu
{
int num=5;
static void method1(){
System.out.println("Fu method");
}
}
class Zi extends Fu
{
int num=7;
static void method1(){
System.out.println("Zi method");
}
}
class DuoTai01
{
public static void main(String[] args){
Fu f=new Zi();
f.method1();
Zi z=new Zi();
z.method1();
}
}
執行結果:
Fu method
Zi method
在多态中,靜态成員函數的特點:
無論編譯和運作,都參考左邊
接口型引用指向自己的子類對象
接口的出現提高了功能擴充性
接口型引用指向子類對象提高了程式的擴充性
接口降低了耦合性,提高了功能擴充性,提供了規則
------ Java教育訓練、Android教育訓練、iOS教育訓練、.Net教育訓練、期待與您交流! -------