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/49http://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 |