Warum funktioniert ein Java-Konstruktor haben, öffentlich oder geschützt für eine Klasse erweitert werden, die außerhalb seines Pakets?

Das folgende ist meine ProtectedConstructor.java source code:

package protectCon;

public class ProtectedConstructor{
    public int nothing;
    ProtectedConstructor(){
        nothing = 0;
    }
}

Und folgende ist die UsingProtectedCon.java Quelle:

package other;

import protectcon.ProtectedConstructor;

public class UsingProtectedCon extends ProtectedConstructor{   //**Line 4**
    public static void main(String... a) {  
    }
}

Wenn ich kompilieren UsingProtectedCon.java, bekomme ich Fehler in Zeile 4 oben. Es sagt, dass ProtectedConstructor() ist nicht öffentlich ; also kann nicht zugegriffen werden, außerhalb des Pakets.

Jedoch, da meine Klasse public ist, sollte ich nicht in der Lage sein, um es zu erweitern außerhalb des Pakets. Ich bin sowieso nicht die Schaffung einer Instanz.

Nun, wenn ich den Konstruktor von ProtectedConstructor Klasse als public oder protected dann wird der code kompiliert einwandfrei mit keine Fehler.

Also warum ist es notwendig, auch für den Konstruktor public oder protected, und nicht nur die Standard-Zugang?

InformationsquelleAutor whitehat | 2011-12-13

Schreibe einen Kommentar