我在使用与另一个类的接口时遇到了麻烦。
我有一个Animal类,一个Pet类和一个PetInterface类。 Pet类扩展了Animal类,PetInterface类扩展了JFrame。
我的问题是我需要使用PetInterface类中Pet类的方法,例如:
JLabel happinessLabel = new JLabel(gethappiness());
我不知道如何让它发挥作用。每当我使用
public class Pet extends Animal implements PetInterface {
它告诉我“PetInterface类型不能是Pet的超接口;超接口必须是接口”。
答案 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)