При расширении класса в Java я могу дать методы, которые я переопределяю более высокие или равные модификаторы доступа, но не более низкие. Ниже не будет разрешено, так как метод foo
в ClassB
должен быть public
:Есть ли наследование модификатора доступа для конструкторов в Java?
public class ClassA {
public void foo() {}
}
public class ClassB extends ClassA {
@Override
protected void foo() {}
}
Кажется, что это не относится к конструкторам. Я могу сделать следующее:
public class ClassA {
public ClassA() {}
}
public class ClassB extends ClassA {
protected ClassB() {}
}
Почему это так? Существуют ли другие правила, которые также применяются к конструкторам, но не к методам?