能够使用受保护的构造函数创建一个 var 吗?
Able to create a var with protected constructor?
我在一个项目中有一个 Actor class,里面有方法和数据成员。它就像一个抽象class,但我发现将它设置为抽象没有用(每个方法都已实现)。
public abstract class Acteur {
/**
* Empêchement d'instancier un acteur
*/
protected Acteur() { }
}
关键是在测试中,我可以实例化一个 actor :
import org.junit.Test;
public class ActeurTest {
@Test
public void testActeurConstructeur() {
Acteur acteur = new Acteur();
}
}
所以我的问题是:这怎么可能?我想知道只有 sub-classes 才能 use/override 受保护的构造函数?
谢谢
For the question you are wondering that only sub-classes can
use/override a protected constructor.
protected
可以在同一个包中访问。
Access Modifiers In class Same package Anywhere but subclasses Outside package & non relate
Private Y N N N
Default Y Y N N
Protected Y Y Y N
Public Y Y Y Y
我在一个项目中有一个 Actor class,里面有方法和数据成员。它就像一个抽象class,但我发现将它设置为抽象没有用(每个方法都已实现)。
public abstract class Acteur {
/**
* Empêchement d'instancier un acteur
*/
protected Acteur() { }
}
关键是在测试中,我可以实例化一个 actor :
import org.junit.Test;
public class ActeurTest {
@Test
public void testActeurConstructeur() {
Acteur acteur = new Acteur();
}
}
所以我的问题是:这怎么可能?我想知道只有 sub-classes 才能 use/override 受保护的构造函数?
谢谢
For the question you are wondering that only sub-classes can use/override a protected constructor.
protected
可以在同一个包中访问。
Access Modifiers In class Same package Anywhere but subclasses Outside package & non relate
Private Y N N N
Default Y Y N N
Protected Y Y Y N
Public Y Y Y Y