ABOUT ME

95.12.1 / 취준생 / Java

Today
Yesterday
Total
  • CHAPTER 7. (9) 내부 클래스란? (인스턴스, 스태틱, 지역, 익명 클래스 포함)
    java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 13:57

    내부 클래스
     - 클래스 내에 선언된 클래스
      ㄴ 왜? 두 클래스가 서로 긴밀한 관계
     - 클래스 내에 선언된다는 점 제외, 일반 클래스와 다르지 않음

    장점
     - 두 클래스 멤버간 서로 쉽게 접근 가능 (private 접근 가능)
     - 외부에 불필요한 클래스 감춤 (코드 복잡성 감소)

    주의
     - 내부 클래스 B가 외부 클래스인 A를 제외하고 다른 클래스들에서 잘 사용되지 않는 것이어야 함

    ex.
    A 클래스와 관련된 상호작용만 하는 C 클래스

    종류
     - 인스턴스 클래스
     ㄴ 클래스 안에 클래스 (거의 얘만 씀)
     
     - 스태틱 클래스
     ㄴ 클래스 안에 static 클래스 (거의 안씀)

     - 지역 클래스
      ㄴ 클래스 안에 있는 메서드 안에 정의된 클래스 (거의 안씀)

     - 익명 클래스

    ex.
    class Outer {
     class InstanceInner {} // 인스턴스 클래스
     static class StaticInner {} // 스태틱 클래스

    void myMethod() {
     class LocalInner {} // 지역 클래스
     }
    }



    인스턴스 내부클래스
     - 외부 클래스로 외부 객체가 생성된 후 내부 클래스 설계도 사용가능
     - 인스턴스 내부 클래스는 외부 클래스의 모든 멤버에 접근 가능
     - 외부 클래스의 클래스 메서드는 인스턴스 내부클래스 사용 불가
     
    스태틱 내부클래스
     - 외부 클래스가 메모리에 로딩만 되도 내부 클래스 설계도 사용 가능
     - 스태틱 내부클래스는 외부 클래스의 클래스 멤버에만 접근 가능
     - 스태틱 메서드에서 사용 가능한 외부 클래스는 스태틱 내부클래스 뿐



    익명 클래스
     - 일회용 클래스
     - 다른 클래스들과 달리 이름이 없음
     - 클래스 선언, 객체 생성 동시에 함
     - 한번만 사용
     - 오직 하나의 객체 생성

    특징 
     - 생성자 없음
     - 상속과 구현 동시 불가 (한 클래스 상속 or 한 인터페이스 구현 중 택)
     - 반드시 조상이 있어야 함 (인터페이스, 추상클래스, 일반 클래스)
     - 조상을 기반으로 클래스가 정의되고, 딱 한번 객체 생성 가능

    class A {
    A() {} // 이름있는 클래스는 생성자가 있음
     }

    A a1 = new A();
    A a2 = new A():

    // 이름 있는 클래스는 객체 여러 개 생성 가능

    ex.
    // 익명클래스 작성에 사용되는 조상 인터페이스
    interface Parent {
    void biz();
     }

    // 익명 클래스로 객체 만들기

    Parent child = new Parent() {
    public void biz() {
    수행문;
    수행문;
    }
     };


    이 부분이 클래스

    {
    public void biz() {
    수행문;
    수행문;
    }
     };

Designed by Tistory.