1. 程式人生 > >java介面有什麼作用?

java介面有什麼作用?

java 的介面到底起什麼作用
 
1、從書中看到的是java程式的介面中只定義了常量及空方法,空的方法有什麼用呢?還要在類中寫方法體,那還要接口乾什麼?
2、一個程式中寫了2個介面,並在同一個類中寫方法體,這與多繼承有什麼關係。
3、包中那些已定義的介面,怎麼知道那裡面定義了什麼方法。
說到底,介面有什麼實際意義,哪本書都不講,一味的講是多繼承,不結合實際實在不好懂。
 
Clkrst給出了更詳細的解釋:
類描述了一個實體,包括實體的狀態,也包括實體可能發出的動作。
 
介面定義了一個實體可能發出的動作。但是隻是定義了這些動作的原型,沒有實現,也沒有任何狀態資訊。
 
所以介面有點象一個規範、一個協議,是一個抽象的概念;而類則是實現了這個協議,滿足了這個規範的具體實體,是一個具體的概念。
 
從程式角度,簡單理解,介面就是函式宣告,類就是函式實現。需要注意的是同一個宣告可能有很多種實現。
 
所以就你的問題:
1、介面中定義類方法的原型,但是不能說是空方法,因為空方法的意思是有實現體,只不過實現體是空操作。實際上介面沒有定義任何實現體。具體的實現體都是在實現介面的類中,介面只是定義了這些方法的呼叫方式。
 
你當然也可以不用介面,直接在類裡面寫方法,但是如果你的一組方法需要在很多類裡實現,那麼把它們抽象出來,做成一個介面規範,不是更好麼?
 
2、一個類描述了一個實體,這個實體可能是一個複雜的物件,它的動作很多,如果把這些動作分類,用介面a定義其中的某一組動作,介面b定義其中的另外一組動作,這樣的結構,比較清楚。
 
這種方式具備了多繼承的優點,避免了多繼承的缺陷。實際上在歷史上,介面在很大程度上,是為了解決多繼承帶來的種種問題而設計出來的。
 
3、包中那些已定義的介面,怎麼知道那裡面定義了什麼方法。
 
接口裡定義了方法的輸入輸出,這些都是協議,具體的實現都在每個類中。對於很多隻需要抽象介面的地方,不需要知道具體的類是什麼,只要這個類實現了這個介面就可以了。