gpt4 book ai didi

java - 扩展抽象类的奇怪行为(练习)

转载 作者:行者123 更新时间:2023-12-01 23:27:33 26 4
gpt4 key购买 nike

我正在准备 Java SE 7 认证考试,并且正在做一些关于继承和访问修饰符的无聊练习。

但是现在我在应用继承时遇到了意外的行为。在我的基础包 com.testpkg 中,我有一个抽象类:

package com.testpkg;

public abstract class Abstract {

public int test();

}

注意,我自愿省略了 test() 方法的 abstract 修饰符。

然后我在包 com.testpkg.sub 中扩展了 Abstract 的具体类:

package com.testpkg.sub;

public class Concrete extends Abstract {

public int test() {
return 0;
}
}

我使用以下方法测试此类:

package com.testpkg;

import com.testpkg.sub.Concrete;

public class TestMain {

public static void main(String[] args) {
Abstract c = new Concrete();
System.out.println(c.test());
}
}

如果我尝试编译它,显然会遇到两个错误:

The method test() requires a body instead of a semicolon

但是如果我运行测试类:0 会打印在控制台上!

这对我来说似乎很奇怪。您能解释为什么即使 test()Abstract 类中错误声明,代码仍然可以工作吗?

注意我正在使用 Eclipse IDE 来编译/运行我的代码。

最佳答案

您的 test() 方法需要一个 abstract 限定符。您可能正在运行旧的类文件。如果将 return 语句的值更改为 0 以外的值,您将看到它没有运行此代码。

关于java - 扩展抽象类的奇怪行为(练习),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766552/

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