当前位置:  开发笔记 > 编程语言 > 正文

Java接口是抽象类吗?

如何解决《Java接口是抽象类吗?》经验,为你挑选了2个好方法。

我正在完成一些家庭作业,并在之前的试卷上提出一个问题,要求在给定的UML图中命名所有抽象类.我想,相当简单.有一个抽象类和三个接口.一般来说,这些接口是否有资格作为抽象类?



1> Tamas Czineg..:

事实上,虽然技术上接口可能表示为Java等语言中的类,但我不认为它们是类.

抽象?当然好.类?没有.

接口不能有构造函数,也不能有属性,字段,函数体等.接口不能被继承,它们被实现(再次,从技术上讲,实现接口实际上可能是在特定语言中继承接口,但这不是我的观点.)接口更像是"契约",因为它们没有像类那样定义任何行为.

现在,如果这是一个家庭作业,那么你不应该与老师争论这些东西.只需检查您的讲义,看看您老师对界面的定义中是否提到了"课程"这个词.


接口可以继承:接口可以扩展另一个接口

2> VonC..:

所有界面都是抽象的

实际上,您可以在接口中将方法声明为抽象...除了任何"checkstyle"工具将告诉您abstract关键字是多余的.所有方法都是公开的.

如果类实现了接口并且未实现其所有方法,则必须将其标记为抽象.如果一个类是抽象的,那么它的一个子类应该实现其未实现的方法.

为了回应其他答案,接口不是类.

接口是一种类似于类的引用类型,它只能包含常量,方法签名和嵌套类型.没有方法体.接口无法实例化 - 它们只能由类实现或由其他接口扩展.

接口不是类层次结构的一部分,尽管它们与类结合使用.

定义新接口时,您将定义新的参考数据类型.您可以在任何可以使用任何其他数据类型名称的地方使用接口名称.如果定义其类型为接口的引用变量,则分配给它的任何对象都必须是实现该接口的类的实例


为了更好地解释为什么接口不是类,请考虑以下事项:

1 /接口是使用的类型

2 /一个类是对象

3 /:

Object a = new Date();
String s = a.toString();

变量'a' 的类型是Object(实际上是Java源代码中的类型符号,表示对Object 的引用),

但是它指向的对象的是Date.

类型(Object)仅根据编译器的类型检查影响哪些代码有效,但不影响代码实际执行的操作.

对象的类会影响代码的作用,因此第二行中的a.toString()调用返回一个看起来像Date的String,而不是看起来像"java.lang.Object@XXXXXXXX"的String.

由于接口是一种类型,因此它仅用于值,并且不代表在运行时方面实际执行的对象.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有