Java 扩展对象与实现接口
试图理解一个我在考试中出错的问题:Java 扩展对象与实现接口,java,inheritance,interface,Java,Inheritance,Interface,试图理解一个我在考试中出错的问题: 继承与实现接口有何不同 通过继承,类从其超类获得行为 对于接口,类从其实现的接口获得行为(这是我选择的) 通过继承,类必须实现由其超类定义的方法 对于接口,类从其实现的接口获得实例变量和行为 我的想法是接口定义行为,而超类定义特性。。。或者它们是一样的?还是我的理解完全落后了 编辑:我想我应该指定我知道接口和继承之间的区别。我只是想知道有两个选项使用了“行为”一词。我不知道教授是在挑剔术语,还是问得不好 我知道,当您实现一个接口时,您必须实现接口中定义的所
继承与实现接口有何不同
编辑:我想我应该指定我知道接口和继承之间的区别。我只是想知道有两个选项使用了“行为”一词。我不知道教授是在挑剔术语,还是问得不好 我知道,当您实现一个接口时,您必须实现接口中定义的所有方法。因此,我想说接口定义了类必须具有的行为,但扩展了另一个超类(尽管它也定义了一些行为(可以给子类更多),它似乎不像定义行为的接口那样适合。如果该类实现了一个接口,则可以确定它具有某些行为
也许这个问题的本意是问接口本身是否有行为的代码,或者它是否只是定义——如果用这样的措辞,我就会知道答案。当你实现一个接口时,你不一定非常关心实现。还要记住,你可以实现尽可能多的接口你需要,因为他们只指定合同,而不指定如何履行合同。接口的创建者让你负责 当你扩展一个对象时,通常是因为你需要一些已经存在的对象已经拥有的大部分功能,但只需要额外的一点。或者你想重新定义一个已经存在的对象的一些现有行为
答案是:1是正确的。你不必实现超类的方法(继承)。只有当它是抽象的时候,这个超类的下一个子类才需要实现这些方法(比如在接口中).当您实现一个接口时,您不一定非常关心它的实现。还请记住,您可以实现任意多个接口,因为它们只指定契约,而不指定如何实现它们。接口的创建者让您负责这一点 当你扩展一个对象时,通常是因为你需要一些已经存在的对象已经拥有的大部分功能,但只需要额外的一点。或者你想重新定义一个已经存在的对象的一些现有行为
给你答案:1是正确的。你不必实现超类的方法(继承)。只有当它是抽象的时候,这个超类的下一个子类才需要实现这些方法(比如在接口中)。实现x接口的对象告诉对象它必须做所有的动作(方法)在接口的定义中列出。因此,在实现x的对象中,需要实现所有操作。接口不能实例化
但是当您从对象y继承时,对象y可能已经有了一些操作的实现。如果没有,则方法将被标记为抽象(java),您需要在继承的对象中实现它。实现x接口的对象告诉对象它必须执行所有操作(方法)在接口的定义中列出。因此,在实现x的对象中,需要实现所有操作。接口不能实例化
但是当您从对象y继承时,对象y可能已经有了一些操作的实现。如果没有,方法将被标记为抽象(在java中),您需要在继承的对象中实现它。这是java中非常常见的OO设计问题 真诚地推荐这篇关于这个主题的非常好的文章,这篇文章解释得很好:
这是Java中非常常见的OO设计问题 真诚地推荐这篇关于这个主题的非常好的文章,这篇文章解释得很好:
正确答案是1。您选择的答案(选项2)是错误的,因为接口技术上没有任何行为。它们只是一个抽象方法的列表。您可以将它们更多地看作是一个可以在其中建立类的模板。例如,假设一个项目被分成两个部分,它们需要在最后被集成。每个团队可以使用一个公共接口将它们的类建立在基础上。集成将是一项容易得多的工作。正确答案是1。您选择的答案(选项2)是错误的,因为接口技术上没有任何行为。它们只是一个抽象方法的列表。您可以将它们更多地看作是一个可以在其中建立类的模板。例如,假设一个项目被分成两个部分,它们需要在最后被集成。每个团队可以使用一个公共接口将它们的类建立在基础上。集成将是一项容易得多的工作。通过继承,你会得到一只猫。通过接口,你会得到一只猫的骨架。通过继承,你会得到一只猫的骨架。通过接口,你会得到一只猫的骨架。你会从继承中获得行为和实现。记住,子类继承了所有非构造函数和私有类这意味着您可以继承某些方法的功能(实现) 有了实现,你就有了公正的行为
public interface IEventListener {
public void handleEvent(Event event);
}
public abstract BaseClass {
public void baseMethod(int value) {
System.out.println(int);
}
public class SubClass extends BaseClass {
}