Hello

Java 내부클래스의 종류, 특징, 선언

by 볼빵빵오춘기

내부 클래스(inner class)

클래스 안의 클래스

 

내부 클래스의 장점

  • 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
  • 코드의 복잡성을 줄일 수 있다.(캡슐화)
    → 외부에서 사용하지않고 A안에서만 사용된다하면 B를 내부클래스로 만들어 복잡성을 줄일 수 있다.

 

예제 코드

더보기
class AA{
	int i=100;
	BB b = new BB();
}

class BB{
	void method() {
		AA a = new AA();
		System.out.println(a.i);
	}
}

public class InnerTest {

	public static void main(String[] args) {
		BB b = new BB();
		b.method();

	}

}

⇒ B클래스에서 A클래스를 사용할려면 객체를 생성해서 만들었어야 했다.

 

class AA{ // 외부클래스 
	int i=100;
	BB b = new BB();
	
	class BB{ // 내부 클래스 
		void method() {
			System.out.println(i); // 객체 생성없이 외부 클래스의 멤버 접근가능 
		}
	}
}

public class InnerTest {

	public static void main(String[] args) {
		// 이제 B클래스는 독립적인클래스가 아니어서 따로 B객체 생성불필

	}

}

 

내부 클래스의 종류와 특징

내부 클래스의 종류와 유효범위는 변수와 동일

 

인스턴스 클래스(instance class)

외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 인스턴스멤버처럼 다루어진다. 

주로 외부 클래스의 인스턴스멤버들과 관련된 작업에 사용될 목적으로 선언된다.

 

스태틱 클래스(static class)

외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 static멤버처럼 다루어진다. 

주로 외부 클래스의 static멤버, 특히 static메서드에서 사용될 목적으로 선언된다.

 

지역 클래스(local class)

외부 클래스의 메서드나 초기화블럭 안에 선언하며, 선언된 영역 내부에서만 사용될 수 있다.

 

익명 클래스(anoymous class)

클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용)

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기