프로그래밍 언어/JAVA

JAVA) 클래스 변수와 인스턴스 변수

luana_eun 2022. 2. 4. 16:40
728x90

1. 클래스 변수와 인스턴스 변수.

클래스변수와 인스턴스 변수의 차이는 겉으로 봤을땐 static이 있고, 없고의 차이다. 

class A {
  static String st = "클래스 변수";
  String inst = "인스턴스 변수";
}

메서드도 마찬가지로 겉모습이 static이 있고 없고의 차이

class A {
	....
	static void static_method() {
		// 클래스 메서드
	}
	
	void instance_method() {
		// 인스턴스 메서드
	}
}

 

 

 

2. 클래스 vs 인스턴스 접근성

클래스 메서드는 클래스 변수에 접근 가능 (O)

                      인스턴스 변수에 접근 불가능 (X)

 

인스턴스 메서드는 클래스변수, 인스턴스변수 둘 다 접근 가능 (O)

 

 

 

3. 메서드 호출 방법

클래스 안의 메서드를 호출할때는 두 가지 방법이 있다. 

 

첫 번째, 인스턴스를 생성해서 호출하는 방법.

           Test t = new Test();

           t.method();

두 번째, 클래스명으로 호출하는 방법. 

           Test.method();

 

클래스 메서드의 경우 static으로 선언되서 메모리 영역에 있기때문에 어디서든 접근이 가능하므로

                            두 번째 방법으로도 호출할 수 있다. 

인스턴스 메서드의 경우는 인스턴스를 생성해야먄 접근할 수 있다. 

위의 사진을 보면 클래스 메서드는 인스턴스, 클래스명 접근이 모두 가능해서 1, 2의 결과가 나왔는데

클래스 메서드로는 클래스 변수만 접근할 수 있어서 "클래스 변수" 만 출력되었다. 

 

인스턴스 메서드는 인스턴스를 통해서만 메서드를 호출할 수 있어서 맨 밑에는 오류가 나기때문에 주석처리로 했다. 

인스턴스 메서드는 클래스, 인스턴스 변수 모두 접근할 수 있어서 3번결과에 두개가 출력되는 모습이 보인다. 

 

 

 

전체 코드(빨간색 체크 표시가 오류가 나는 부분)

 

728x90