69pao国产精品视频-久久精品一区二区二三区-精品国产精品亚洲一本大道-99国产综合一区久久

Java 多態(tài)

java 多態(tài)

 

多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。

多態(tài)就是同一個(gè)接口,使用不同的范例而執(zhí)行不同操作,如圖所示:

多態(tài)性是對(duì)象多種表現(xiàn)形式的體現(xiàn)。

 

1. 多態(tài)的優(yōu)點(diǎn)

  • 1. 消除類型之間的耦合關(guān)系
  • 2. 可替換性
  • 3. 可擴(kuò)充性
  • 4. 接口性
  • 5. 靈活性
  • 6. 簡(jiǎn)化性

 

2. 多態(tài)存在的三個(gè)必要條件

  • 繼承
  • 重寫
  • 父類引用指向子類對(duì)象:parent p = new child();

class shape {
    void draw() {}
}
 
class circle extends shape {
    void draw() {
        system.out.println("circle.draw()");
    }
}
 
class square extends shape {
    void draw() {
        system.out.println("square.draw()");
    }
}
 
class triangle extends shape {
    void draw() {
        system.out.println("triangle.draw()");
    }
}

當(dāng)使用多態(tài)方式調(diào)用方法時(shí),首先檢查父類中是否有該方法,如果沒(méi)有,則編譯錯(cuò)誤;如果有,再去調(diào)用子類的同名方法。

多態(tài)的好處:可以使程序有良好的擴(kuò)展,并可以對(duì)所有類的對(duì)象進(jìn)行通用處理。

 

3. 多態(tài)的范例

public class test {
    public static void main(string[] args) {
      show(new cat());  // 以 cat 對(duì)象調(diào)用 show 方法
      show(new dog());  // 以 dog 對(duì)象調(diào)用 show 方法
                
      animal a = new cat();  // 向上轉(zhuǎn)型  
      a.eat();               // 調(diào)用的是 cat 的 eat
      cat c = (cat)a;        // 向下轉(zhuǎn)型  
      c.work();        // 調(diào)用的是 cat 的 work
  }  
            
    public static void show(animal a)  {
      a.eat();  
        // 類型判斷
        if (a instanceof cat)  {  // 貓做的事情 
            cat c = (cat)a;  
            c.work();  
        } else if (a instanceof dog) { // 狗做的事情 
            dog c = (dog)a;  
            c.work();  
        }  
    }  
}
 
abstract class animal {  
    abstract void eat();  
}  
  
class cat extends animal {  
    public void eat() {  
        system.out.println("吃魚");  
    }  
    public void work() {  
        system.out.println("抓老鼠");  
    }  
}  
  
class dog extends animal {  
    public void eat() {  
        system.out.println("吃骨頭");  
    }  
    public void work() {  
        system.out.println("看家");  
    }  
}

執(zhí)行以上程序,輸出結(jié)果為:

吃魚
抓老鼠
吃骨頭
看家
吃魚
抓老鼠

 

4. 多態(tài)的實(shí)現(xiàn)方式

  • 重寫
  • 接口
  • 抽象類和抽象方法

下一節(jié):java interface 接口

java語(yǔ)言 教程

相關(guān)文章