Java - InnerClass

2020. 7. 6. 23:13Java

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package inner_class_stage5;
 
import inner_class_stage5.OuterClass.InnerClass;
 
public class InnerClassEx {
 
    public static void main(String[] args) {
        //클래스 내의 멤버변수 또는 메서드에 접근하려면 인스턴스 생성이 필수
        OuterClass oc=new OuterClass();
        oc.print();
        
        //내부클래스의 인스턴스 생성
        //주의! 내부클래스 인스턴스를 직접 생성할수 없다.
//        InnerClass ic=new InnerClass();//컴파일 에러 발생!!!
        //new 키워드 뒤에 내부클래스를 직접 지정할수없고
        //외부클래스참조변수명.new 내부클래스명();
        
        InnerClass ic=oc.new InnerClass();
        ic.print();
        
        
        
    }
 
}
 
/*
 * 내부클래스(Inner CLass)
 * 클래스 내에 또 다른 클래스를 정의하는 것(=중첩클래스, Nested Class)
 * 특정 클래스를 하나의 클래스 내에서만 전용으로 사용할 때 주로 사용
 * GUI 구현에 많이 사용되는 방법
 * 
 */
 
class OuterClass{
    private int instanceVar;
    
    public void print() {
        //멤버메서드에서는 멤버변수의 접근 제한자와 관계없이 자유롭게 접근 가능
        System.out.println(instanceVar);
    }
    
    //내부클래스 정의
    class InnerClass{
        private int innerInstanceVar;
        
        public void print() {
            //내부 클래스 내에서는 외부클래스의 멤버에 자유롭게 접근 가능
            System.out.println(instanceVar+", "+innerInstanceVar);
//            print();//멤버메서드 접근
//            System.out.println(innerInstanceVar);
        }
    }
    
}
cs

GUI 구현에 많이 사용되는 개념인 InnerClass를 배워보았는데 크게 어렵진 않으니 잘 보고 개념만 숙지해 두자. 

'Java' 카테고리의 다른 글

Java - Layout,JTextArea,JTextField,JPanel  (0) 2020.07.07
Java - JFrame,ActionListener  (0) 2020.07.07
Java - JFrame  (0) 2020.07.06
Java - javax.swing, GUI,JFrame  (0) 2020.07.02
Java - Thread,synchronized  (0) 2020.07.02