JAVA/개념

day05 #클래스, 인스턴스 멤버

수e 2022. 2. 12. 21:55

 

멤버 = 변수와 메소드



클래스 영역 안에는 변수와 메소드만.(+변수에 초기값 대입)  - if for syso 등 x


인스턴스 메소드(void)는 클래스 멤버에 접근할 수 있다.
클래스 메소드(static void)는 인스턴스 멤버에 접근할 수 없다. 
(클래스는 항상 인스턴스보다 먼저->아직 만들어지지 않은 인스턴스에 접근하려는 격)

 

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
class C1 {
    
    static int static_variable = 1;
    int instance_variable = 2;
    static void static_static() {
        System.out.println(static_variable);        //static to static : 가능
    }            
   static void static_instance() {
        System.out.println(instance_variable);        //static to instance : 불가능1
    }
    
    void instance_static() {
        System.out.println(static_variable);        //instance to static : 가능
    }
    void instance_instance() {
        System.out.println(instance_variable);        //instance to instance : 가능
    }
public class Member {  
    public static void main(String[] args) {
        C1 c = new C1();
        c.static_static();                            //instance 이용해 static 메소드에 접근    -> 성공
        c.static_instance();                        //static 메소드가 instance 변수에 접근    -> 실패(불가능1)
        c.instance_static();                        //instance메소드가 정적 변수에 접근        ->성공
        c.instance_instance();                        //성공
        C1.static_static();                            //성공
        C1.static_instance();                        //실패
        C1.instance_static();                        //실패(클래스 입장에서는 아직 생성되지 않은 인스턴스메소드에 접근할 수 없음)
        C1.instance_instance();                        //실패(인스턴스 메소드는 아직 생성되지 않음)
    }
    
}
cs

 

 

 

 

출처 : 수업+생활코딩 자바 입문(구버전)