Pra*_*tta 7 java extends interface abstract
我只是想知道为什么abstract课程不能扩展interface.
既然我们不能实例化一个abstract类,我不能只扩展接口然后覆盖扩展抽象类的类中的那些方法吗?
例如
abstract class AbstractClass extends InterfaceA
{
}
interface InterfaceA
{
public void methodToBeImplemented();
}
class MyClass extends AbstractClass
{
@Override
public void methodToBeImplemented(){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
Qix*_*Qix 16
因为你不是extends一个界面 - 你implements呢.
interface InterfaceA
{
public void methodToBeImplemented();
}
abstract class AbstractClass implements InterfaceA
{
}
class MyClass extends AbstractClass
{
@Override
public void methodToBeImplemented(){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
抽象类仍然是一个类,就像任何其他类一样.只有接口才能有extends其他接口.
您实际上可以在Java中扩展接口,但它仍然可以称为接口.
然后,您可以使用抽象类中实现的此扩展接口.
interface InterfaceName
{
public void foo();
}
public interface ExtendedInterface extends InterfaceName
{
public void bar();
}
public class ClassName implements ExtendedInteface
{
//implementation for all methods in InterfaceName and ExtendedInteface
...
}
Run Code Online (Sandbox Code Playgroud)
Praveen,它就是设计师设计的方式.它可以追溯到Java的哲学以及类和接口的使用方式.假设您有以下课程:学生,教授,员工,技术员.以下界面:人口统计,Paydetails和Personaldetails.
理想情况下,班级教授和技术人员都可以从班级员工中进行扩展,这是有道理的.但是,想象从人口统计学或Personaldetails扩展类技术员.它没有意义.它就像从班级蓝色延伸班级天空一样.只是因为你可以做的并不意味着你应该这样做.但是,让一名技术人员从员工扩展并实现Paydetails或人口统计等界面更有意义.它就像从大自然延伸天空,但实现蓝色界面(赋予它蓝色的功能).
这是Java开发人员反对多重继承(与cpp不同)而不是使用接口的基本原因.在你的问题中,如果类是抽象的是无关紧要的.你简单地无法从界面扩展,因为它在逻辑上没有意义.
| 归档时间: |
|
| 查看次数: |
14055 次 |
| 最近记录: |