gpt4 book ai didi

java - 无法从其他包实现抽象类

转载 作者:搜寻专家 更新时间:2023-11-01 03:59:13 26 4
gpt4 key购买 nike

出于某种原因,我似乎无法在定义它的包之外实现抽象类。 package1 中的抽象类不能在 package2 中的类中实现。为什么这不是合法的 Java?

package com.stackoverflow.abstraction.package1;

abstract public class BaseClass {
abstract Long foo();
}

package com.stackoverflow.abstraction.package1;

public class Implement1 extends BaseClass {
@Override
Long foo() {
return null;
}
}


package com.stackoverflow.abstraction.package2;

import com.stackoverflow.abstraction.package1.BaseClass;

/** Compiling this class will output
* - Implement2 is not abstract and does not override abstract method foo() in BaseClass
* - error: method does not override or implement a method from a supertype
*/

public class Implement2 extends BaseClass {
@Override
Long foo() {
return null;
}
}

运行:OS X 10.6.8- Java(TM) SE 运行时环境(构建 1.6.0_31-b04-415-10M3646)- OpenJDK 运行时环境(build 1.7.0-u4-b13-20120301)尝试了两个 Java 版本。当然不是同时:)

最佳答案

该方法是包级可见性,因此您不能在其他包中覆盖它。

abstract Long foo();

If a method has no modifier (the default, also known as package-private), it is visible only within its own package

如果您确实需要覆盖它,请将其设置为 protected

protected abstract Long foo();

信息

关于java - 无法从其他包实现抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10799193/

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