Выхода нет.Вы должны создать доступный (protected
, public
или по умолчанию) супер-конструктор, чтобы иметь возможность расширять test
.
. Этот тип нотации обычно используется в служебных классах или синглетонах, гдене хотите, чтобы пользователь сам создал экземпляр вашего класса, либо расширяя его и создавая экземпляр подкласса, либо просто вызывая конструктор вашего класса.
Когда у вас есть class
только с private
конструкторы, вы также можете изменить class
на final
, потому что он вообще не может быть расширен.
Другое решение будет иметь метод в test
, который создает экземпляры test
и делегировать каждый вызов метода из One
в test
экземпляр.Таким образом, вам не нужно расширять test
.
class Test {
private Test() {
System.out.println("test");
}
public static Test getInstance(){
return new Test();
}
public void methodA(){
//Some kind of implementation
}
}
public class One {
private final Test test;
One() {
System.out.println("One");
test = Test.getInstance();
}
public void methodA(){
test.methodA();
}
public static void main(String args[]) {
new One();
}
}