【发布时间】:2023-03-15 17:30:01
【问题描述】:
我在一个项目中,我有一个 Actor 类,其中包含方法和数据成员。它就像一个抽象类,但我觉得将它设置为抽象没有用(每个方法都实现了)。
public abstract class Acteur {
/**
* Empêchement d'instancier un acteur
*/
protected Acteur() { }
}
问题是在测试中,我可以实例化一个演员:
import org.junit.Test;
public class ActeurTest {
@Test
public void testActeurConstructeur() {
Acteur acteur = new Acteur();
}
}
所以我的问题是:这怎么可能?我想知道只有子类可以使用/覆盖受保护的构造函数?
谢谢
【问题讨论】:
-
可以从同一个包中调用。在这里查看:stackoverflow.com/questions/215497/…
-
但在上面的sn-p中被标记为abstract。
-
当我试用您的代码时,我收到一条错误消息:“Acteur' 是抽象的;无法实例化”。确保您正在编辑正确的文件,完成了干净的编译等等。您不应该能够构建这样的抽象类。如果您对声明为
protected的内容的可见性感到困惑,请查看 this table。
标签: java constructor protected