내부 클래스  

일반적으로 자바나 c++ c# 등 기본적으로 클래스 생성들은 대부분 외부 클래스를 해당됩니다.

그렇다면 외부 클래스 안에 존재하는 클래스들 내부 클래스라고합니다. 

그렇다면 왜? 내부 클래스를 사용하는가 의문이 들것같습니다. 

내부 클래스는 외부에서 접근을 막기위해서 사용합니다.

쉽게 이해를 돕기위해서 

 

예를들어 Player 클래스가 존재한다고 가정하겠습니다. 그렇다면 Player의 Invetory  클래스, Stat 클래스는 외부에 존재할 필요가 있을까요 물론 개발자 입장에 따라 Invetory  클래스의 경우에는 필요하다면 외부에서 만들어 쓸수 있습니다.

하지만 Stat와 같은 오직 Player에의 스탯이기 때문에 외부에 노출시킬 필요가 없습니다. 말그대로 응집도는 강화시키고 

다른 클래스와 결합도를 낮출수 있게 됩니다. 

 

내부 클래스의 예시를 보겠습니다.

public class Main {

  
	public static void main(String [] args)  {
	   MyInnerClass myInnerClass=new MyInnerClass();
	   //private SubInnerClass 내부 클래스 접근불가 
	   
	   myInnerClass.OuterMethod();
	   
	   
	   	}
	
}

 

 먼저 위의 코드를 보면 메인 클래스 MyInnerClass클래스를 확인해보겠습니다

package Test01;

public class MyInnerClass {
	
	private class SubInnerClassPrivate{
		
		public void SubInnerMethod(String str) {
			System.out.println(str);
		}
		
	}
	
	SubInnerClassPrivate sb=new SubInnerClassPrivate();
	public void OuterMethod() {
		sb.SubInnerMethod("InnerMethod");
	}

}

 

 보시면 MyInnerClass는 외부 클래스에 해당되고 SubInnerClassPrivate는 내부 클래스에 해당됩니다.

그렇다면 필요하다면 어떻게 내부클래스의 메서드나 자료형을 이용하는 방법은 일반적으로 우리가

Private 변수들을 Method Getter와 Setter 방식과 유사합니다.

SubInnerClassPrivate sb=new SubInnerClassPrivate();
	public void OuterMethod() {
		sb.SubInnerMethod("InnerMethod");
	}

내부클래스를 외부클래스 내부에서 선언하고 외부로 보낼수 있게 함수를 만듭니다.

 

그리고 다시 SubInnerClassPrivate 클래스의 외부클래스인 MyInnerClass에서만 사용가능한 함수를 만들어줍니다.

private class SubInnerClassPrivate{
		
		public void SubInnerMethod(String str) {
			System.out.println(str);
		}
		
	}

그렇가하면 sb.SubInnerMethod를 호출하게됩니다.

	sb.SubInnerMethod("InnerMethod");

'프로그래밍언어 > JAVA' 카테고리의 다른 글

<JAVA>람다식  (0) 2020.12.09
<JAVA> 익명 내부 클래스  (0) 2020.12.09
<JAVA>Collection Set,Map  (0) 2020.12.07
<JAVA>Generic - 제네릭 프로그래밍  (0) 2020.12.07
<JAVA>StringBuilder  (0) 2020.12.07

+ Recent posts