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
package p278;
 
class p281 {
    int iv = 10// 클래스 변수안에 존재하는 인스턴스 초기화후 iv에 10이 존재
    static int cv = 20// 클래스 멤버 statc cv에 20이 존재
 
    int iv2 = cv; // 인스턴스 변수는 클래스 변수를 참조할수 있다.
 
    // 그러나 아래와 같이 클래스 변수는 인스턴스변수를 참조할수 없다. 에러발생!!!
    /* * static int cv2=iv; 클래스변수는 인스턴스 변수를 사용 할 수 없음 */
 
    static int cv2 = new p281().iv;
 
    static void staticMethod1() {
        System.out.println(cv);
        /* System.out.println(iv); 클래스메서드에서 인스턴스 변수를 사용불가 */
        // 객체를 생성한 후에 인스턴스변수의 참조가능
        p281 c = new p281();
        System.out.println(c.iv);
    }
 
    void instanceMethod1() {
        System.out.println("인스턴스변수에서 호출하는 클래스변수" + cv);
        System.out.println("인스턴스에서 호출하는 인스턴스변수" + iv);
    }
 
    static void staticMethod2() {
        staticMethod1();
        /* instanceMethod1(); 클래스메서드안에서는 인스턴스메서드를 호출할수 없다. */
        p281 c = new p281();
        c.instanceMethod1();
    }
 
    void instanceMethod2() {
        staticMethod1();
        instanceMethod1();
    }
}
 
cs

 

다음은 클래스변수와 인스턴스변수의 차이점을 나열한 소스코드이다.

본 소스코드를 통해 자바에 대해 자세히 알수 있다.

'23.12.24 삭제예정 > 자바' 카테고리의 다른 글

기본형 매개변수 VS 참조형 매개변수  (0) 2017.05.25
Super()-조상 클래스의 생성자  (0) 2017.05.01
오버라이딩의 조건  (0) 2017.05.01
자바-생성자  (0) 2017.04.27
자바-오버로딩에 관해서  (0) 2017.04.24

+ Recent posts