본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다
코딩/JAVA Basics

[자바 JAVA] 중첩 클래스

by parzival56 2022. 12. 6.

중첩 클래스

중첩의 대상은 클래스가 들어갈 수도 있고, 인터페이스가 들어갈 수도 있습니다. 

클래스 안에 들어간 클래스는 중첩 클래스, 클래스 안에 들어간 인터페이스는 중첩 인터페이스가 되는 것입니다.

class 외부 {
	class 내부 {}
}

class 외부 {
	interface 내부 {}
}

밑의 중첩 인터페이스는 그래픽 프로그래밍에서 자주 이용한다고 하네요.

 

중첩 클래스 같은 경우에는 외부 클래스에 private멤버가 있다 하더라도 자유롭게 접근할 수 있다는 특징이 있습니다.

 

중첩 클래스는 멤버 클래스와 지역 클래스로 나뉘며 멤버 클래스는 정적 멤버 클래스와 인스턴스 멤버 클래스로 나뉩니다.

class 외부 클래스 {
	class 멤버 클래스 {}
    
    interface 중첩 인터페이스{}
}

class 외부 클래스 {
    void 메서드() {
        class 지역 클래스 {}
    }
}

위의 코드가 바로 멤버 클래스와 지역 클래스의 차이입니다. 멤버 클래스는 저 상태에서 static만 붙여주면 정적 멤버 클래스가 됩니다. 그러면 현재 위에 적힌 해당 멤버 클래스는 인스턴스 멤버 클래스인 것입니다. 인스턴스 멤버 클래스는 흔히 내부 클래스라고도 불립니다. 

코딩에는 지역과 전역이라는 개념이 존재합니다. (코딩에만 존재하는 건 아니지만요)

전역이란 어디서든 제약없이 사용할 수 있는 즉, 클래스나 메서드 안에 있는 것이 아닌 가장 바깥 필드에 존재하는 것들입니다. 그러나 지역이란 위의 경우처럼 메서드나 함수 안에 들어가 메서드나 함수가 작동해야 유효해지는 것들입니다. 

그래서 전역 변수와 지역 변수의 값을 비교하는 문제도 많이 나옵니다.

 

내부 클래스가 외부 클래스를 참조하려면 외부 클래스.this를 사용합니다. 

 

멤버 클래스의 객체 생성

// 1. 인스턴스 멤버
외부클래스.인스턴스멤버클래스 변수 = 외부클래스의 객체변수.new 인스턴스멤버 생성자();

// 2. 정적 멤버
외부클래스.정적멤버클래스 변수 = new 외부클래스.정적멤버클래스 생성자();

다른 점이 보이시나요? 바로 new 앞쪽인데 정적 멤버는 객체가 필요 없기 때문에 그냥 외부 클래스만 넣어주면 되는 것이 서로가 식이 다른 이유입니다. 

 

인스턴스, 정적, 지역 클래스를 사용하는 방법을 사진을 통해 설명하겠습니다.

다음은 내부 인터페이스의 사용 예제 입니다.

class Icon {
    interface Touchable {
        void touch();
    }
}
public class InnerInterfaceDemo implements Icon.Touchable() {
    public void touch() {
        System.out.println(“아이콘을 터치한다.“);
    }
    public static void main(String[] args) {
        Icon.Touchable btn = new InnerInterfaceDemo();
        btn.touch();
    }
}

결과는 '아이콘을 터치한다."가 나올 것입니다. 

 

이상으로 중첩 클래스와 인터페이스에 대해 알아봤습니다.

 

'코딩 > JAVA Basics' 카테고리의 다른 글

[자바 JAVA] 예외처리  (0) 2022.12.06
[자바 JAVA] 자바의 람다식  (0) 2022.12.06
[자바 JAVA] 추상클래스와 인터페이스  (0) 2022.12.06
[자바 JAVA] 다형성  (0) 2022.12.05
[자바 JAVA] 상속  (0) 2022.12.05

댓글