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 | package a; class C1{ static int static_variable = 1; int instance_variable = 2; static void static_static(){ System.out.println(static_variable); } static void static_instance(){ // 클래스 메소드에서는 인스턴스 변수에 접근 할 수 없다. // System.out.println(instance_variable); } void instance_static(){ // 인스턴스 메소드에서는 클래스 변수에 접근 할 수 있다. System.out.println(static_variable); } void instance_instance(){ System.out.println(instance_variable); } } public class a { public static void main(String[] args) { C1 c = new C1(); // 인스턴스를 이용해서 정적 메소드에 접근 -> 성공 // 인스턴스 메소드가 정적 변수에 접근 -> 성공 c.static_static(); // 인스턴스를 이용해서 정적 메소드에 접근 -> 성공 // 정적 메소드가 인스턴스 변수에 접근 -> 실패 c.static_instance(); 오류 // 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공 // 인스턴스 메소드가 클래스 변수에 접근 -> 성공 c.instance_static(); // 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공 // 인스턴스 메소드가 인스턴스 변수에 접근 -> 성공 c.instance_instance(); // 클래스를 이용해서 클래스 메소드에 접근 -> 성공 // 클래스 메소드가 클래스 변수에 접근 -> 성공 C1.static_static(); // 클래스를 이용해서 클래스 메소드에 접근 -> 성공 // 클래스 메소드가 인스턴스 변수에 접근 -> 실패 C1.static_instance(); // 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패 C1.instance_static(); // 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패 C1.instance_instance(); } } | cs |
클래스에서 인스터스 변수와 메소드에 접근 할 수 없다는 것과
static메소드가 인스턴스 변수에 접근 할 수 없다는 것을 확인해 볼 수 있는 예제입니다.