class A { //1st code starts here
private void display() {
System.out.println("A class");
}
}
class B extends A {
protected void display() {
System.out.println("B class");
}
}
class Test {
public static void main(String args[]) {
A obj = new B();
obj.display();
}
}
sortie: Test.java:22: error: display() dispose d'un accès privé dans un obj.display();primordiaux de méthode Java et concepts classe interne
class Outer{ //2nd Code starts here
class Inner1{
private void m2() {
System.out.println("Inner1 class");
}
}
class Inner2 extends Inner1{
protected void m2() {
System.out.println("Inner2 class");
}
}
public static void main(String args[]) {
Outer o=new Outer();
Outer.Inner1 i=o.new Inner2();
i.m2();
}
}
Sortie: Inner1 classe
Pourquoi erreur de compilation de temps en 1er code tandis que la classe de sortie Inner1 en 2ème Code ???
Vous ne pouvez pas remplacer les méthodes privées –
La visibilité de la classe interne ne peut pas être supérieure à celle de la superclasse. –
Parce qu'une classe englobante a accès aux membres 'private' de ses classes internes; donc la classe 'Outer' dans votre deuxième exemple est autorisée à accéder à la méthode' private' 'm2' dans la classe' Inner1'. – Jesper