티스토리 뷰

반응형

내부클래스와 익명클래스

※개념정리

 

내부클래스 - 클래스 안에 클래스가 선언된 것

 

내부클래스는 총 4종류로 나뉜다.

 

1)내부클래스

중첩 클래스 or 인스턴스 클래스

 

클래스의 필드에 선언되는 클래스이다.

 

public class Inner{

  class E1{

   int i = 1;

    public void abc( ){

     syso(i);

  }

}

public static void main(String[]args){

  Inner in = new Inner( );

  Inner.E1 e1 = in.newE1( );

  e1.abc( );

  }

}

// 클래스 객체선언

//클래스명.내부클래스명 변수 = 클래스참조변수.new내부클래스명( );

 

2)내부클래스

정적중첩 클래스 or static 클래스

 

클래스의 필드에 선언되는 정적클래스이다.

 

public class Inner{

  static class E2{

   int i = 2;

    public void abc( ){

    syso(i);

  }

}

public static void main(String[]args){

  lnner.E2 e2 = new E2( );

   e2.abc( );

 }

}

//클래스명.내부클래스 변수 = new 내부클래스명( );

 

3)내부클래스

지역중첩 클래스 or 지역 클래스

 

클래스의 메서드에 선언되는 클래스이다.

 

public class Inner{

  public void exec( ){

   class E3{

    int i = 3;

     public void abc( ){

     syso(i); }

  }

 E3 e3 = new E3( );

 e3.abc( );

}

public static void main(String[]args){

 Inner i = new Inner( );

 i.exec( );

 }

}

//메서드에서 내부클래스 객체선언

//메인메서드에서 클래스 객체선언

//클래스참조변수.메서드( );

 

4)내부클래스

익명클래스

 

추상클래스에서 부모클래스 단계를 생략하고 객체선언을 통해 만들어진 내부 클래스이다.

 

①추상클래스

public abstract class E4{

 public abstract void abc( );

}

②메인클래스와 메인메서드

public class Inner{

  public static void main(String[]args){

   E4 e4 = new E4( ){

    public void abc( ){

    int i = 4;

    syso(i);

   }

  };

 e4.abc( );

 }

}

//추상클래스는 객체선언을 할수 없지만, 익명클래스에서 가능하다.

//int i = 4; 는 메서드 선언 전에 하여도 무방하다.

//추상클래스의 괄호가 끝난 후에 내부클래스참조변수.메서드( )호출한다.

댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함