내부클래스
웹 & 안드로이드/JAVA & JSP2013. 10. 4. 14:42
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class Test { public static void main(String a[]){ TestClass c = new TestClass(); c.innerClass.test1(); } } class TestClass { String a = "TestClass 클래스의 멤버 변수."; class TestInnerClass{ String b = "내부 TestInnerClass 클래스의 멤버 변수."; public void test1(){ //내부 클래스는 외부 클래스의 멤버를 자신의 멤버처럼 사용할 수 있다. System.out.println(a); System.out.println(b); } } //클래스의 입장에서 내부클래스는 자신의 안에 있는것이 아닌 //외부에 있는 다른 클래스처럼 인식 하므로 내부 클래스를 호출 할 수 있는 방법이 있어야 한다. //그중 하나가 내부클래스를 멤버로 선언 하는 것이다. TestInnerClass innerClass = new TestInnerClass(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class Test2 { public static void main(String a[]){ //외부 클래스를 먼저 선언후, 외부 클래스를 통해서 내부클래스를 선언 하는 방법이 있다. Test2Class c = new Test2Class(); Test2Class.Test2InnerClass ic = c.new Test2InnerClass(); ic.test1(); } } class Test2Class { String a = "TestClass 클래스의 멤버 변수."; class Test2InnerClass{ String b = "내부 TestInnerClass 클래스의 멤버 변수."; public void test1(){ //내부 클래스는 외부 클래스의 멤버를 자신의 멤버처럼 사용할 수 있다. System.out.println(a); System.out.println(b); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class Test3 { public static void main(String a[]){ //본래는 직접적으로 호출이 불가능 하지만 스태틱 내부클래스는 직접 호출이 가능하다. Test3Class.Test3InnerClass c = new Test3Class.Test3InnerClass(""); c.test1(); } } class Test3Class { String a = "Test3Class 클래스의 멤버 변수."; static String c = "Test3Class 클래스의 스태틱 멤버 변수"; static class Test3InnerClass{ public Test3InnerClass(String b) { super(); this.b = b; } String b = "내부 Test3InnerClass 클래스의 멤버 변수."; public void test1(){ //내부 클래스는 외부 클래스의 멤버를 자신의 멤버처럼 사용할 수 있다. //System.out.println(a);//내부 스태틱 클래스는 외부클래스의 멤버를 호출 할 수 없다. System.out.println(b); System.out.println(c);//스태틱 내부 클래스는 외부의 스태틱 멤버만 호출이 가능하다. } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class Test4 { public static void main(String a[]){ Test4Class c = new Test4Class(); //메소드 내에 선언된 내부 클래스는 외부에서 호출이 불가능 하다. //Test4Class.Test4InnerClass c1 = c.new Test4InnerClass();//에러! } } class Test4Class { String a = "Test4Class 클래스의 멤버 변수."; static String c = "Test4Class 클래스의 스태틱 멤버 변수"; public void test4member(){ //메소드 내에 선언된 내부 클래스. class test4InnerClass{ String b = "test4InnerClass 내부 클래스의 멤버 변수."; public void test4InnerClassMember(){ //메소드 내에 선언되었다 하더라도 외부 클래스의 멤버에 접근이 가능하다. System.out.println(a); System.out.println(b); System.out.println(c); } } } } |
'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글
디자인 패턴 (0) | 2013.10.14 |
---|---|
IntegerArrayConverter - String배열을 int배열로 변환 (0) | 2013.10.06 |
다형성 - 업캐스팅, 다운캐스팅 (0) | 2013.10.02 |
다형성-인터페이스 (0) | 2013.10.02 |
다형성-추상클래스 (0) | 2013.10.01 |
댓글()