본문 바로가기
Programming/Java

[기초] 내부 클래스, 익명 클래스

by devpine 2019. 12. 19.
반응형

1) 중첩 클래스 / 인스턴스 클래스 (필드 선언 위치에 선언됨)

  • 밖에 Main 객체를 만든다 -> Main.Cal cal = m.new Cal(); 생성 후 사용
public class Main {
    class Cal{
        int val = 0;
        public void plus(){
            val++;
        }
    }
    public static void main(String[] args) {
        Main m = new Main();
        Main.Cal cal = m.new Cal();
        cal.plus();
        System.out.println(cal.val);
    }
}

 

2) 정적 중첩 클래스 / static 클래스 (내부 클래스가 static으로 정의됨)

  • Main 객체 생성할 필요 없이 Main.Cal cal = m.new Cal(); 생성 후 사용

 

public class innerExam2 {
    static class Cal{
        int val = 0;
        public void plus(){
            val++;
        }
    }
    public static void main(String[] args) {
        innerExam2.Cal cal = new innerExam2.Cal();
        cal.plus();
        System.out.println(cal.val);
    }
}

 

3) 지역 중첩 클래스 / 지역 클래스 (메소드 안에 클래스 선언함)

  • 메소드 안에서 해당 클래스 이용 가능
public class innerExam3 {
    public void exec(){
        class Cal{
            int val = 0;
            public void plus(){
                val++;
            }
        }
        Cal cal = new Cal();
        cal.plus();
        System.out.println(cal.val);
    }
    public static void main(String[] args) {
        innerExam3 t = new innerExam3();
        t.exec();
    }
}

 

4) 익명 클래스 / 익명 중첩 클래스

  • Action을 상속받는 클래스를 만들 필요가 없을 경우 사용(예: 일회성)
public abstract class Action {
    public abstract void exec();
}
public class Main {
    public static void main(String[] args) {
//        Action action = new MyAction();
//        action.exec();

        Action action = new Action() {
            @Override
            public void exec() {
                System.out.println("exec");
            }
        };
        action.exec();
    }
}

 


이 글은 아래 강의를 수강하고 개인적으로 정리한 글입니다.

https://programmers.co.kr/learn/courses/5

 

자바 입문 | 프로그래머스

평가 4.9 33개의 평가 ★★★★★31 ★★★★1 ★★★1 ★★0 ★0 김세윤 2019.12.03 18:36 박성근 2019.11.28 02:41 정일영 2019.11.14 00:02 APEACH 2019.10.28 12:16 최재욱 2019.10.12 20:16 리뷰 더보기

programmers.co.kr

 

반응형

'Programming > Java' 카테고리의 다른 글

[중급] Object 클래스  (0) 2019.12.19
[기초] 예외 처리  (0) 2019.12.19
[기초] String 클래스  (0) 2019.12.19
Java 개발 환경 Intellij 설치  (0) 2019.12.19
[Spring] DAO, DTO, Service란  (0) 2019.04.17

댓글