如何解决抽象和接口类
以下陈述正确吗? 如果A和B都是接口或类,则A扩展B是正确的
怎么可能是真的?如果A是一个接口而B是一个类,则Interface无法继承一个类。还是可以?如果是这样,请您提供一些支持示例。
解决方法
根据上下文,“扩展”用于“类型X是类型Y的子类型”的一般概念。
例如,给定:
interface INTERFACE {}
class CLASS implements INTERFACE {}
那么说CLASS
实现 INTERFACE
当然是正确的。
根据上下文,可能会说CLASS
会扩展 INTERFACE
。
例如,INTERFACE x = new CLASS();
是合法的,这表明最后CLASS
是INTERFACE
的子类型。
作为第二个示例,在泛型范围内,关键字extends
用于指示可以通过接口实现的子类型关系。例如,这是真正的Java代码:
interface INTERFACE {}
class CLASS implements INTERFACE {}
List<? extends INTERFACE> someList;
someList = new ArrayList<CLASS>();
注意,此处使用extends
。如果您编写了List<? implements INTERFACE>
,那将是编译时错误。
如果这是某种家庭作业问题,则术语上的问题是没有德雷德法官。
没有人会拿着一本术语书,如果您弄错了,会把您打入下周。如果有人决定在不经意的谈话中说ArrayList扩展了List(请注意ArrayList是一个类,List是一个接口),那么谈论 right 和 wrong 。张开嘴并使空气通过声带的目的是进行交流。传达思想和观念。
如果打开yap的目的是要传达这样一个概念,即ArrayList
是List
的子类型,并且可以满足任何需要代码List
的地方好吧,我个人想说“ ArrayList extended List”是一种公平的游戏……-而且,要指出的是,ArrayList是子类型,这是完全正确的。
如果您决定听到“如果我写class ArrayList extends List {}
,它将编译”-好的,那么您会遇到沟通不良的经典问题。说话者原本打算做一件事,但您理解了另一件事。一直发生。谨慎选择单词并转向更接近语言规范可能会有所帮助,但是正如我已经证明的那样,java 本身在某些情况下使用extends
来表示'subtype of',在其他情况下上下文,特别是仅意味着“这是我的父类”,并且这些概念并不完全相同。
在这种情况下,我猜这是可能的输出-
- A扩展了B(如果两者都是接口)
- A扩展了B(如果两者都是类)
如果为1,则一个接口可以毫无问题地扩展另一个接口。
@rzwitserloot已经回答了其余问题。
,一个接口可以扩展其他接口。
一个类实现多个接口。
一个类仅扩展一个类。
接口无法扩展类
我们在Java中使用接口概念,因为如果要在Java中使用多个继承。在 Java7 之前,我们无法在界面中编写非抽象方法,但是从 java8 中,我们可以使用 default 和静态关键字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。