gpt4 book ai didi

java - (Java) 为什么会这样编译 : trivial final class does not implement abstract methods from inherited abstract parent

转载 作者:行者123 更新时间:2023-11-29 09:13:34 25 4
gpt4 key购买 nike

为什么要编译? (在 Oracle java 5 & java 6 下都试过(是的,我知道,我适应的很慢)

public abstract class BaseClass
{
public abstract void methodA(String abc);

public abstract String methodB(String abc);
}

public final class ConcreteClass
extends BaseClass
{
}

只需将这两个类弹出到单独的文件中,对它们调用 javac,然后 poof,它们就会编译。由于抽象方法旨在由实现者实现,因此这没有意义。进一步研究,当一段代码试图调用未实现的方法时,我只会收到编译错误。

再一次,我的问题是,有没有人知道为什么编译器允许这样做(或者为什么我们希望它这样做)?

补充说明:

  • 当我进行初始测试时,我最初没有将 ConcreteClass 标记为最终类,我想到另一个类可以扩展该类,因此编译器可能不会提示并假设您会有其他类稍后在路上处理它,但将类(class)标记为 final类应该很清楚地表明情况并非如此。

最佳答案

正如@Jigar 在评论中提到的,您一定是导入了错误版本的 BaseClass。当我试图编译你的代码,我得到以下错误:

/Users/ShirishP/Desktop/ConcreteClass.java:1: ConcreteClass is not abstract and does not override abstract method methodB(java.lang.String) in BaseClass
public final class ConcreteClass extends BaseClass
^
1 error

关于java - (Java) 为什么会这样编译 : trivial final class does not implement abstract methods from inherited abstract parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com