首頁  >  文章  >  Java  >  物件導向(介面 ,多型)

物件導向(介面 ,多型)

巴扎黑
巴扎黑原創
2017-06-26 11:09:541055瀏覽

介面

(1)當抽象類別中的方法都是抽象的時候,java就提供了一種新的表現形式:介面,介面是功能的集合介面無法建立物件
(2)格式
  父介面:public interface Tnter{


}
子類別:public class interImp implements Itner{

}

介面的使用
1.介面無法建立物件
2.定義實作類別來實作介面
實作的關鍵字 implements
3.重寫抽象方法 
4.建立實作類別物件 呼叫方法


介面的特點
1.不需要被abstract 修飾
# 2 .類別實作介面,可以單實作還可以多實作
3.介面可以繼承介面,可以單繼承也可以多繼承
4.介面與父類別的功能可以重複,均代表要具備某種功能

介面的成員特點
成員變數 靜態常數 
# 固定修飾符 public static final
無論寫入不寫 挑寫都是這個修飾符 不變

成員方法
固定修飾符  public abstract
# 無論寫不寫 挑著寫都是這個修飾詞 不變

##抽象類別和介面的差異1.成員的區別
抽象類別:
成員變數: 可以是變數,也可以是常數
建構方法:有建構方法,用於子類別實例化使用
成員方法:可以是抽象的,也可以是非抽象的
介面:
成員變數:只能是常數
預設修飾符:public static final
## 成員方法:只能是抽象的

預設修飾符:public abstract


推薦:預設修飾符請永遠自己手動給出

2.類別和介面的關係區別
類別與類別: 繼承關係,只能單繼承,可以多層繼承

類別與介面:

實作關係,可以單實作,也可以多實作

類別還可以繼承一個類別的同時實作多個介面

介面與介面:

繼承關係,可以單繼承,也可以多繼承


3.體現的概念不同
抽象類別裡面定義的都是一個繼承體系中的共性內容

介面是功能的集合是一個體系額外的功能,是暴露出來的規則


一切使用父類別/介面引用的地方都可以傳入其子類別/實作類別物件


 

#多態

同一個物件,在不同時刻體現出來的不同的狀態 舉例:水(水,冰,水蒸氣)
貓(貓,動物)
前提:
A: 有繼承或實現關係
B: 有方法的重寫
C: 有父類別的引用指向子類別物件
多態中的成員使用特點
Fu fz=new Zi();
多態時所有表現形式都是父類的表現形式
只有呼叫方法時,運行的是子類別重寫的方法
1.成員變數
編譯看左邊 運行看左邊
2.成員方法
編譯看左邊 運行看右邊

 1         class Fu{ 2             int num=4; 3             void show(){ 4                 system.out.println("showFu") 5             } 6  7         } 8         class Zi extends Fu{ 9 10             int num=5;11             void show(){12                 system.out.println("showZi");13             }14         }15         class T{16             public static void main(String args[]){17                 Fu f=new Zi();18                 system.out.println(f.num);19                 f.show();20             }21         }
 

多態中的轉型

1.向轉型 把子類別物件賦值給父類(介面)的引用自動型別提升
int a=0; double b=a;
Fu fz=new Zi();
2.向下轉型
把父類別(介面)的引用強制轉換成子類別物件
double b=10.0;
int a=(int)b;

Fu fz=new Zi();
Zi zi=(Zi)fz ;
注意:Fu fu=new Fu()不能向下轉型會報ClassCastException類型轉換異常

# 多態的好處及弊端

1.好處提高了程序可維護性和可擴展性
2.弊端
不能適用子類特用內容
要想使用,要么向下轉型,要么重新創建子類對象

多態的三種形式
1.具體的類別多型父類別變數名稱=new 子類別() 2.抽象類別多型 父抽象類別變數名稱=new 子類別()
3.介面多型  介面 變數名稱=new 實作類別()


#instanceof關鍵字
格式:物件名稱instanceof類別名稱 傳回值:true false
作用:判斷指定的物件是否為給定類別所建立的物件

Animal a1=new Cat();
Animal a2=new Dog();
method(a1)
public static void method(Animal a){

if(a instanceof Cat){

向下轉換

呼叫貓特有的方法
  }
}

以上是物件導向(介面 ,多型)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn