본문 바로가기
Back_end/JAVA

JAVA - 내부 클래스

by hyeon1016 2024. 9. 23.

내부 클래스

 

클래스 안에 클래스를 만드는 것으로, 내부 클래스는 외부 클래스의 멤버를 자신의 멤버인 것처럼 사용할 수 있다.

 

왜 쓰는가?

 

- 내부에 클래스를 감추어 캡슐화 하여, 리버스 엔지니어링을 방지하기 위함

 

 

인스턴스 클래스

 

외부 클래스의 멤버의 위치에 선언한다. 외부 클래스의 인스턴스 멤버 처럼 다뤄진다.

외부 클래스가 생성되면 생성가능하다.

class A {
    class Innerinstance{}
}

 

 

static 클래스

 

외부 클래스의 멤버 위치에 선언한다. 외부클래스의 클래스(static) 멤버처럼 다뤄진다.

class A {
    static class Innerstatic{}
}

 

 

지역 클래스

 

메서드 내부의 지역 변수의 위치에 선언한다. 지역 변수처럼 다뤄지며, 메서드 내부에서 사용됨.

class A {
    void B() {
        class InnerLocal{}
    }
}

 

 

 

내부 클래스 생성방법

OuterClass oc = new OuterClass();   => 외부 클래스 생성

OuterClass.InnerClass ic = oc.new InnerClass();  => 외부 클래스를 통해 내부 클래스 생성


**클래스(static) 타입의 멤버는 인스턴스 타입의 멤버를 호출 및 사용 불가능함

 

 

익명 클래스

 

이름이 없는 클래스.

클래스를 생성하는 부분에서 클래스를 오버라이딩하여 사용하는 것이다.
중괄호 끝에 세미콜론을 붙여야한다.

A a1 = new A() {
    //오버라이딩
};

 

익명 클래스 예시

public class OuterClass1 {
	void a() {
		System.out.println("method A");
	}
	
	void b() {}
}

public class Anonymous2 {

	public static void main(String[] args) {
		OuterClass1 o = new OuterClass1() {
			void a() {
				System.out.println("새롭게 정의한 익명 클래스의 메서드 입니다.");
			}
		};
		
		o.a();
		OuterClass1 ok = new OuterClass1();
		ok.a();
	}
}

 

'Back_end > JAVA' 카테고리의 다른 글

JAVA - 기본 API(Date, Calendar)  (1) 2024.09.27
JAVA - 기본 API(문자열 클래스)  (1) 2024.09.26
JAVA - 예외처리  (0) 2024.09.23
JAVA - 추상 클래스와 인터페이스  (0) 2024.09.22
JAVA - 다형성  (0) 2024.09.22