我正在尝试使用extends关键字代替工具来使用接口,这在java中是可能的。
Interface myinterface
{
//methods
}
public class myclass extends myinterface
{
//methods
}
告诉我这两个词的目的是扩展和实现。为什么class不使用implement关键字从其他类继承类
答案 0 :(得分:2)
接口不能扩展,而是实现。 接口只能包含常量,方法签名和嵌套类型。也就是说,它们只代表模型的抽象,或者只包含常量列表。
接口支持继承。例如,你可以:
public interface InterfaceA extends InterfaceB
如果你真的想从类扩展并有一些抽象方法,你可以使用抽象类:
public abstract class AbstractA {
public abstract void myAbstractMethod;
}
public class A extends AbstractA {
@Override
public abstract void myAbstractMethod {
// your code
}
}
答案 1 :(得分:1)
类不能扩展 Interface
。他们只能实施他们。只有Interface
可以扩展另一个Interface
,就像只有Class
可以扩展另一个Class
一样。
告诉我这两个词的目的是扩展和实现。
当一个类extends
它继承了属性和行为,即它所扩展的类中的方法。类只能从一个类扩展,因为Java中不支持多重继承。
当一个类implements
时,它提供了行为,即在它实现的Interface
中定义为存根(只是没有代码的签名)的方法的实现。但是,类可以实现多个接口。
当Interface
扩展另一个Interface
时,只需将更多方法添加到实现它需要为其提供实现的Class
方法列表中。
答案 2 :(得分:1)
不,你必须使用implements
接口。
如果您绝对需要使用扩展,则可以创建abstract class
。
答案 3 :(得分:1)
想想这两个词以及他们告诉你的内容。
实施 - 意味着实现某些目的。接口定期定义为类必须具有或实现的方法的契约。基本上你是在使合同生效。
延伸 - 意味着延长时间。通过扩展类,您基本上可以通过包括扩展类的所有方法来延长它。
根据定义,两个不同的词语为您提供代码中的两种不同的能力。
答案 4 :(得分:0)
正如其他人一样,最简洁的@Stefan Beike说:不,当你的意思是extends
时,你不能使用implements
。如果需要,您可以做的是添加一个中间抽象类,implements
您的界面,然后extend
该类。有时,这是通过接口方法的空实现完成的,然后您只需要覆盖子类中感兴趣的方法。但如果您只想使用extends
,那么它可以是一个纯粹的抽象类,否则将会调用implements
。
答案 5 :(得分:0)
Extends - 由类用于扩展另一个类的某些功能,以便可以重用相同的方法或字段。基本示例可以是:
class Animal
{
private String name;
public void setName(String name)
{
this.name = name;
}
public int getLegs()
{
return 2;
}
}
class Elephant extends Animal
{
public int getLegs()
{
return 4;
}
}
现在,setter被重用并且extends不会强制它被覆盖,但是根据要求,任何方法都可以被覆盖,在我们的例子中是getter。
实现 - 类可以实现接口。这有助于实现抽象。接口中的任何方法都需要由实现接口的任何类实现。它是强制性的,除非类是抽象的,否则任何其他具体类都应该实现未实现的方法。
因此,类可以扩展其他类以重用功能,并且类可以实现接口来强制执行类必须自己提供的某些功能。
现在,为什么接口扩展接口,我也不确定,可能是因为子接口将扩展超级接口的方法,它将在实现子接口的类的超级接口中强制执行方法。由于超级接口不强制在子接口上实现,因此无法使用实现。
我希望我很清楚。
答案 6 :(得分:0)
class扩展class(正确)
class扩展接口(不正确)=>类实现接口(正确)
接口扩展了接口(正确)
接口扩展类(错误)(永远不可能)