11월 12일
(1)원래는 class 앞에 defalt나 public만 붙일수 있는데, 내부 클래스의 제어자는 변수에 사용가능한 제어자(private,protected,defalt,private)와 동일하게 사용된다.
(2)static멤버는 static 내부클래스만 가질수 있다.
(3)static 내부클래스에서는 외부클래스의 인스턴스 멤버에 접근할 수 없다.
(4)final static은 상수이므로 내부클래스에서 허용한다.
(5)내부클래스에 있는 상수에 접근시"내부클래스.상수이름"
(6)메서드안에 있는 지역내부 클래스의 final static 경우 지역클래스이기 때문에 메서드가 종료되면 같이 소멸되어 메서드내에서만 사용이 가능하다.
(7)내부클래스에서는 외부 클래스의 private멤버도 접근이 가능하다.
(8)외부 클래스 지역변수는 final이 붙은 상수만 접근이 가능하다.
참고로,상수는 constant Pool 이라는 곳에서 따로 관리되어 저장되고 있다.
이름이 없는 일회용 클래스, 클래스의 정의와 생성을 동시에 함.
new 조상클래스이름(){...}
new 구현인터페이스이름(){...}
*일반 클래스 구현
public class Ex7_18 {
public static void main(String[] args) {
Button b = new Button("Start");
b.addActionListener(new EventHandler());
}
}
class EventHandler implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.out.println("ActionEvent occurred!!");
}
}
======================================================
*익명 클래스 구현
public class Ex7_18 {
public static void main(String[] args) {
Button b = new Button("Start");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("ActionEvent occurred!!");
}
});
}
}