Ниже приведен мой 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) {
}
}
Когда я компилирую UsingProtectedCon.java
, я получаю ошибку в строке 4, показанной выше. Это говорит о том, что ProtectedConstructor () не является публичным; поэтому недоступен вне пакета.
Однако, поскольку мой класс общедоступен, я не смогу расширить его за пределы пакета. В любом случае, я не создаю ни одного его экземпляра.
Теперь, если я сделаю конструктор класса ProtectedConstructor
как public
или protected
, тогда код скомпилируется без ошибок.
Так почему же даже конструктору необходимо быть public
или protected
, а не просто иметь доступ по умолчанию?