본문 바로가기

Java

Java 내부클래스(Inner Class)

1.내부 클래스 에서 외부 클래스의 변수들을 사용할수있다. (단, static변수 , 인스턴스 변수 의 규칙이 우선이다.) 2.내부 클래스에서는 접근 제어자 private, protected,public 들을 사용할수 있다. 내부클래스는 외부 클래스 에서 보기에 외부클래스의 멤버(변수,함수) 처럼 취급한다.


ihongjun@ihongjun-ui-iMac:~/Funny/java/Pure$ tree
.
├── bin
├── lib
└── src
    ├── MainClass.java
    └── OutterClass.java

3 directories, 2 files

ihongjun@ihongjun-ui-iMac:~/Funny/java/Pure$ cat src/OutterClass.java
public class OutterClass {
    private String p1;
    private InnerClass inner; // 인스턴스멤버 간에는 서로 직접 접근이 가능하다.

    public OutterClass() {
        p1 = "depth_1";
        this.inner = new InnerClass();
    }

    class InnerClass {
        private String p2;
        private String str;

        public InnerClass() {
            p2 = "depth_2";
            str = "inner class private member";
        }
        String getStr() {
            return this.str;
        }
        void display() {
            System.out.println("\tInnerClass Method");
            System.out.println("\t\t"+p1+" > "+p2);
        }
    }

    public InnerClass getInnerClass() {
        return inner;
    }

    void display() {
        System.out.println("OutterClass Method");
        inner.display();
    }

    public static void main(String[] args){
        OutterClass out = new OutterClass();
        out.display();
        out.inner.display();
        System.out.println("\t: "+out.inner.str);
    }

}ihongjun@ihongjun-ui-iMac:~/Funny/java/Pure$ cat src/MainClass.java
class MainClass {
	public static void main(String[] args){
		OutterClass out = new OutterClass();
		out.display();

		OutterClass.InnerClass inner = out.getInnerClass();
		inner.display();
		System.out.println("\t: "+inner.getStr());
	}
}


ihongjun@ihongjun-ui-iMac:~/Funny/java/Pure$ javac -d bin -cp bin src/OutterClass.java src/MainClass.java

ihongjun@ihongjun-ui-iMac:~/Funny/java/Pure$ tree
.
├── bin
│   ├── MainClass.class
│   ├── OutterClass$InnerClass.class
│   └── OutterClass.class
├── lib
└── src
    ├── MainClass.java
    └── OutterClass.java

3 directories, 5 files

ihongjun@ihongjun-ui-iMac:~/Funny/java/Pure$ java -cp bin MainClass
OutterClass Method
	InnerClass Method
		depth_1 > depth_2
	InnerClass Method
		depth_1 > depth_2
	: inner class private member

인스턴스 클래스(instance class)

스태틱 클래스(static class)

지역 클래스(local class)

익명 클래스(anonymous class)

http://dkatlf900.tistory.com/49
http://gangzzang.tistory.com/entry/Java-%EB%82%B4%EB%B6%80%ED%81%B4%EB%9E%98%EC%8A%A4inner-class

'Java' 카테고리의 다른 글

Single Pattern  (0) 2015.01.12
Javadoc 사용법  (0) 2014.12.31
Java 캡슐화(Encapsulation)  (0) 2014.12.24
Java Class 접근제한자  (0) 2014.12.23
Java 라이브러리 사용  (0) 2014.12.18