|
Тема |
пъзелче |
|
Автор | purist (Нерегистриран) | |
Публикувано | 13.01.04 09:56 |
|
|
Даден е следният клас, който вътре в себе си включва свой анонимен наследник. Въпросът е какъв ще бъде изхода от програмата и защо.
public class Twisted {
private final String name;
public Twisted(String name) {
this.name=name;
}
private void printName() {
System.out.println(name);
}
/** ей тука е интересното */
public void doit() {
new Twisted("doit") {
public void f() {
printName();
}
}.f();
}
public static void main(String []ar) {
new Twisted("base").doit();
}
}
при изпълнение на програмата се отпечатва base. Според мен това е защото когато се линква анонимният вътрешен клас неговият printName не е достъпен, f() се връзва към външния printName(). Това обяснение нещо ми се струва криво обаче, вие какво мислите?
|
| |
|
|
|