Если я что-то не понимаю, ответ тривиален:
Компилятору не нужен квалификатор this.
, чтобы определить, когда используется член класса. Единственное, что нужно явно использовать this.
, это когда происходит конфликт имен, как в
public MyClass {
private Foo foo;
MyClass(Foo foo) {
this.foo = foo;
}
}
Обновление: Видимо, я действительно неправильно понял вопрос ... хотя я, видимо, не один с ним.
В любом случае, doSomething()
вызывает getContentPane()
, который является методом JFrame
, pack()
и setVisible()
из родительского класса JFrame
, Window
. Однако это само по себе не делает необходимым для FunWithPanels
расширение JFrame
, поскольку все эти методы являются общедоступными и доступны каждому.
Я считаю, что автор думал, что FunWithPanels
является специализированным типом JFrame
, поэтому он стал подклассом. Таким образом, FunWithPanels
можно использовать везде, где требуется общий JFrame
. См. Принцип замены Лискова для более подробного объяснения. (Примечание: это может или не может быть хорошим дизайном класса, но я не могу много сказать об этом, не зная контекста).