Java接口问题

时间:2014-05-05 12:43:50

标签: java interface compiler-errors

我在使用与另一个类的接口时遇到了麻烦。

我有一个Animal类,一个Pet类和一个PetInterface类。 Pet类扩展了Animal类,PetInterface类扩展了JFrame。

我的问题是我需要使用PetInterface类中Pet类的方法,例如:

JLabel happinessLabel = new JLabel(gethappiness());

我不知道如何让它发挥作用。每当我使用

public class Pet extends Animal implements PetInterface {

它告诉我“PetInterface类型不能是Pet的超接口;超接口必须是接口”。

4 个答案:

答案 0 :(得分:0)

忽略潜在的设计缺陷,看起来您已将PetInterface声明为类而不是公共接口。

答案 1 :(得分: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

答案 2 :(得分:0)

当您对class使用'implements'关键字时,PetInterface是类。 java抛出这样的异常

答案 3 :(得分:0)

java中的界面并不意味着它是用户界面。请在此处查看什么是界面的定义:http://en.wikipedia.org/wiki/Interface_(Java)