2014-05-05 88 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抛出这样的异常