Итак, у меня есть родительский класс и дочерний класс, унаследованный от него.Родительский класс имеет конструктор по умолчанию и параметризованный.Дочерний класс имеет немного другой конструктор по умолчанию, но точно такой же код в параметризованном конструкторе.Выглядит это так:
class Parent{
public String A;
public int B;
public Parent(){
A = "parent";
B = 0;
}
public Parent(int v){
this();
B = v;
}
}
class Child extends Parent{
public Child(){
A = "child";
B = 0;
}
public Child(int v){
this();
B = v;
}
}
public static void main(String args[]) {
Child c = new Child(5);
System.out.println("A: "+c.A); // > A: child
}
Теперь все работает отлично и модно, но скучно.Если я заменю Child(int v){}
на следующее:
public Child(int v){
super(v);
}
Я сохраняю 1 строку, и это веселее, но, очевидно, super(v)
вызывает this()
Родителя внутри.
public static void main(String args[]) {
Child c = new Child(5);
System.out.println("A: "+c.A); // > A: parent
}
Issuper()
можно назвать this()
?
Я знаю, что могу сделать Class(){this(0)}
, но это не весело.
Я думаю, вы можете сделать что-то подобноеиграя с ключевым словом virtual
в C ++, может быть?Во всяком случае, что ты думаешь?