내부 클래스, 정적 내부 클래스, 국부 내부 클래스, 익명 내부 클래스

내부 클래스


정의: 하나의 클래스 내부에서 하나의 클래스를 정의했는데 이 클래스가 바로 내부 클래스이다.
특징:
① 내부 클래스는 해당 클래스의 속성(해당 클래스의 사유 속성 포함)에 접근할 수 있고 내부 클래스가 자체 대상을 만들려면 먼저 해당 클래스의 대상을 만들어야 한다.
 
② 내부 인터페이스를 정의할 수 있고 다른 내부 클래스를 정의하여 이 내부 인터페이스를 실현할 수 있다.
③ 방법 체내에서 하나의 내부 클래스를 정의할 수 있고 방법 체내의 내부 클래스는 허법 형식에 기초한 리셋 조작을 완성할 수 있다.
④ 내부 클래스는 static 요소를 정의할 수 없습니다.
⑤ 내부 클래스는 중첩 가능
public class Coder {

    public  int num=1;
    public  void Paint()
    {
        System.out.println("Paint");
    }
    public  class InnerClass{
        public  void method()
        {
            Paint();
            System.out.println("hello"+num);
        }
    }
    public static void main(String [] args){

        Coder.InnerClass innerClass=new Coder().new InnerClass();
        innerClass.method();
    }
}

정적 내부 클래스


위치: 구성원 위치에 정의하고 static 수식을 사용합니다.
특징:
① 정적 내부류는 외부의 구성원 변수나 구성원 방법에 접근하려면 정적 것이어야 한다.
② 두 개가 생성된다.class 파일, 외부 클래스 Outer.class, 다른 하나는 Outer$Inner입니다.class
public class Coder {

    public static int num=1;
    public static void Paint()
    {
        System.out.println("Paint");
    }
    public static class InnerClass{
        public  void method()
        {
            Paint();
            System.out.println("hello"+num);
        }
    }
    public static void main(String [] args){

        Coder.InnerClass innerClass=new Coder.InnerClass();
        innerClass.method();
    }
}

부분 내부 클래스


위치: 한 종류의 구성원 방법 중
특징: ① 어떠한 접근 수식자도 사용할 수 없다
② 두 개가 생성된다.class 파일, 하나는 Outer.class, 하나는 IOuter$LocalInner입니다.class
③ 국부 내부 클래스 스마트 접근 방법에 명시된final 유형의 변수

익명 내부 클래스


정의: 이 클래스를 계승하거나 인터페이스를 실현한 하위 클래스 익명 대상
public class Coder {
    public void method(){
        new Inner(){
            public void info(){
                System.out.println("hello");
            }
        }.info();
    }
    public static void main(String [] args){

        Coder coder=new Coder();
        coder.method();
    }
}
interface Inner{
    public void info();
}

 

좋은 웹페이지 즐겨찾기