이너 클래스

5BRack·2022년 7월 1일

자바란?

목록 보기
18/42

이너 클래스(Inner Class)

이너 클래스: 내부 클래스 , 아우터 클래스 : 외부 클래스

  • 클래스 내부에서 생성되는 클래스
  • 주로 이벤트 핸들러를 처리할 때 나 안드로이 앱을 만들 때 많이 사용한다.
public class A{
	class B{
    }
}

장점

  • 내부의 클래스는 외부 클래스의 모든 멤버(필드,메서드)에 접근할 수 있다.
  • 작성하는 데 적은 코드가 요구된다.
  • 가독성이 좋다.

외부 클래스의 객체 참조

  • 외부 클래스의 필드와 메서드가 동일한 이름을 내부 클래스에 정의 하였을 때 내부클래스는 외부 클래스를 외부클래스명.this. 을 명시적으로 붙여 참조한다.

정적 멤버 이너 클래스

  • 정적 멤버 이너 클래스는 내부 클래스 안에 static 키워드가 포함된 이너 클래스이다.
  • 외부 클래스의 정적 멤버에만 접근할 수 있다
class A{
	static class B{
    }
}

A.B b = new A.b

지역 이너 클래스

  • 클래스의 멤버가 아닌 메서드 내에서 정의되는 클래스이다.
  • 생성된 메서드 내부에서만 사용 가능하다.
  • 메서드가 호출될 때만 메모리에 로딩된다.
  • 외부 클래스의 멤버를 접근 지정자와 상관없이 사용 가능하다.
  • 자신이 정의된 메서드의 지역변수도 클래스 내부에서 사용 가능하다.

익명 이너 클래스

익명 이너 클래스란

  • 이름을 알 수 없는 이너 클래스
  • 클래스의 중괄호 바로 아래에 사용했을 때에는 인스턴스 익명 이너 클래스
  • 메서드 내부에서 사용했을 때는 지역 익명 이너 클래스
  • 항상 부모의 타입으로 생성된다.
interface C{
	public abstract void bcd();
}

class A1{
	C b = new B(); //내부에서 생성한 인터페이스 상속 클래스를 객체생성
    void abc(){
    	//메서드 구현
    }
    
    class B implement C{     //클래스 내부에서 외부 인터페이스를 상속한 클래스 생성
    	@Overriding
    	public void bcd(){
        	//메서드 구현
        }
    }
}


class A2{
	C b = new C(){		//인터페이스 C를 상속받아 추상 메서드를 구현한 클래스를 생성
    	@Overriding
    	public void bcd(){
        	//메서드 구현
        }
    }
}

0개의 댓글