[ITWILL : JAVA]내부클래스
ITWILL학원 : 20강 JAVA BY 윤미영강사
1. 내부클래스(p363)
- 클래스가 서로 밀접한 관련이 있을때 객체생성없이 사용하기 용이하다
- 주로 이미 만들어진 내부클래스라이브러리를 사용.
- 공통점 : static 변수는 가질 수 없지만, final static 변수는 가질 수 있다.
- 만약 상수가 아닌 변수형태로 선언이 되어있다면 그건 앞에 final이 생략되어진 것임.
- 변수를 사용하고싶다면 차라리 외부클래스의 멤버변수로 선언하는 것이 낫다.
- 내부클래스의 종류 4가지 :
2. 인스턴스 내부클래스
내부클래스를 외부클래스의 멤버변수 선언위치에 선언하는 것.
인스턴스내부클래스는 외부클래스의 멤버변수를 자신의 멤버변수처럼 불러와서 쓸 수 있다.
단독으로 사용하기도한다.
내부클래스의 메서드 사용하는 방법 :
- 외부클래스 객체생성 : 외부클래스명 A = new 외부클래스명();
- 내부클래스 객체생성 : 내부클래스명 B = A.new 내부클래스명();
- 내부클래스의 메서드 사용 : B.method();
- 이러한 것을 단독사용이라고 한다.
1 | public class InstanceInner { |
3. 지역클래스(local class)
- 내부클래스가 외부클래스의 메서드안에서 정의되어지는 것.
- 지역클래스는 단독으로 사용하지않고 내부에서 객체생성 후 호출해서 사용.
- 단독사용의 의미 : 직접 메서드를 불러와서사용,
- 지역클래스인 경우 메서드를 호출하는 순간 객채생성하고 바로 사용할 수 있게해야한다. 즉 단독사용처럼 직접 클래스이름을 불러 사용하는 것이 아니라 지역클래스가 속한 외부클래스메서드를 부르면서 그 속에 있는 클래스가 자동으로 사용되게끔 하는 것이다.
1 | class OuterClass(){ |
4. 익명클래스(p373)
- 인터페이스를 구현할 목적으로 사용.
- 실무에서 자주 사용.
- 익명클래스의 override는 인터페이스 규칙에 의해 public을 붙여줘야한다
- 익명클래스를 어떨때 사용할까?
- 독립적인 클래스 사용 : 인터페이스를 구현한 클래스를 여러번 사용할때 용이.Intf a는 언제어디서나 불러서 사용가능
- 익명클래스 사용 : 인터페이스를 구현한 클래스를 딱 한번 사용할때 용이. 익명클래스는 Intf b에서만 사용가능. 이름이 없기때문에 불러서 사용할 수 없다.
1 | interface Intf{ |
5. 내부클래스 예시
다양한 내부클래스를 생성한 뒤 main메서드로 호출해보자
1 | interface InfoPrintable{ |