Ниже приведен мой исходный код ProtectedConstructor.java
:
package protectCon;
public class ProtectedConstructor{
public int nothing;
ProtectedConstructor(){
nothing = 0;
}
}
И далее - исходный код UsingProtectedCon.java
:
package other;
import protectcon.ProtectedConstructor;
public class UsingProtectedCon extends ProtectedConstructor{ //**Line 4**
public static void main(String... a) {
}
}
Когда я компилирую Используя ProtectedCon.java
, я получаю сообщение об ошибке в строке 4, показанной выше. В нем говорится, что ProtectedConstructor () не является общедоступным; поэтому недоступен за пределами пакета.
Однако, поскольку мой класс является общедоступным, я не должен иметь возможность расширять его за пределами пакета. В любом случае я не создаю ни одного его экземпляра.
Теперь, если я сделаю конструктор класса ProtectedConstructor
как общедоступный
или защищенный
, то код компилируется без ошибок.
Тогда почему даже конструктор должен быть общедоступным
или защищенным
, а не просто иметь доступ по умолчанию?