2014-05-05 86 views
0

我在使用另一個類的接口時遇到問題。Java接口故障

我有一個Animal類,一個Pet類和一個PetInterface類。 Pet類擴展了Animal類,PetInterface類擴展了JFrame。

我的問題是,我需要在PetInterface類中使用的方法從寵物類,例如:

JLabel happinessLabel = new JLabel(gethappiness()); 

我不知道如何得到這個工作。每當我使用

public class Pet extends Animal implements PetInterface { 

它告訴我,「類型PetInterface不能寵物的超接口;一個超接口必須是接口」。

+1

'PetInterface'顯然不是一個接口,它是一個類。 –

+1

*「我的問題是我需要使用PetInterface類中的Pet類的方法」*這總共有0個意義。 –

+0

具體而言,一個接口沒有實現,因此不能依賴於另一個類的方法。 – jgitter

回答

0

忽略這裏潛在的設計缺陷,它看起來像你聲明PetInterface是一個類而不是公共接口。

0

您不能使用extends作爲接口,除非子接口也是接口。

以同樣的方式,您不能使用implements作爲課程。

class PetInterface extends JFrame{} 
class Pet extends Animal implements PetInterface {} //PetInterface is not an interface 

你選擇了一個矛盾的名稱PetInterface,而它實際上是一個class。有時它會造成混淆。


要記住的要點:

  • 可以延伸多個接口
  • 一個類可以實現多個接口的接口
  • 一個類可以擴展單個類

一些樣品來說清楚。

interface InterfaceA{} 
interface InterfaceB extends InterfaceA{} // valid 
// extends an interface where child is also an interface 

class InterfaceA{} 
class InterfaceB implements InterfaceA {} // invalid 
// implements a class 

interface InterfaceA{} 
class InterfaceB extends InterfaceA {} // invalid 
// extends an interface where child is a class 

interface InterfaceA{} 
interface InterfaceC{} 
interface InterfaceB extends InterfaceA,InterfaceC{} // valid 
// extends multiple interfaces 
0

當你使用'implements'關鍵字和類時,PetInterface是類。 java拋出這樣的異常