this
또는 외부 클래스명.this
를 붙여 구별할 수 있다.class Main {
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.method();
}
}
class Outer {
int value = 10;
class Inner {
int value = 20;
void method() {
int value = 30;
System.out.println("value 1: " + value);
System.out.println("value 2: " + this.value);
System.out.println("value 3: " + Outer.this.value);
}
}
}
final static int CONST
와 같이 상수는 모든 내부 클래스에서 정의할 수 있다.)static void staticMethod() {
// static 메서드에서 인스턴스 멤버에 접근하기 위해서는
// 외부 클래스 객체를 먼저 생성해야
OuterClass outer = new OuterClass();
// 인스턴스 클래스를 생성할 수 있다.
InstanceInnerClass ii = outer.new InstanceInnerClass();
}
import java.awt.*;
import java.awt.event.*;
class Main {
public static void main(String[] args) {
Button button = new Button("Start");
button.addActionListener(new EventHandler());
}
}
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("ActionEvent occurred!");
}
}
EventHandler 클래스를 아래와 같은 익명클래스로 정의할 수 있다.
import java.awt.*;
import java.awt.event.*;
class Main {
public static void main(String[] args) {
Button button = new Button("Start");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("ActionEvent occurred!");
}
});
}
}
Source