Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

개발계발

인스턴스 멤버와 정적 멤버 본문

자바

인스턴스 멤버와 정적 멤버

Ju_Nik_E 2024. 4. 26. 20:53
필드와 메소드는 선언 방법에 따라 인스턴스 멤버와 정적 멤버로 분류된다.
인스턴스 멤버는 객체 생성 후 사용할 수 있고(객체에 소속)
정적 멤버는 객체 생성 없이도 사용할 수 있다.(클래스에 고정)

 

인스턴스 멤버

객체지향 프로그래밍 포스팅에서 사용한 예시가 모두 인스턴스 메소드이다.

아래 코드를 보면 된다.

public class Car {
	// 인스턴스 필드
    int speed;
    
    //인스턴스 메소드
    void setSpeed(int speed) { 
    	this.speed = speed
    }
}

 

위 코드처럼 인스턴스 필드와 메소드를 작성하면 다른 클래스에서 해당 필드 혹은 메소드에 접근하려면 우선 객체를 생성하고 객체.필드 혹은 객체.메소드의 형식으로 사용해야한다.

정적 멤버

바로 코드를 보자

public class Calculator {
	// 인스턴스 필드
    String color;
    // 정적 필드
    static double pi = 3.14159;
}

 

static이라는 키워드를 사용한 것을 볼 수 있다.

어떤 계산기를 사용하더라도 계산기에서 pi값은 변하지 않는다.

즉, 객체마다 파이를 따로 가지고 있을 필요가 없다.

그럼 이제 다른 클래스에서 아래와 같이 접근이 가능하다.

public class CalculatorExample {
	public static void main(String[] args) {
    	double result1 = 10 * 10 * Calculator.pi;
    }
}

 

위 코드를 보면 객체를 생성하지 않고 바로 클래스.필드의 형식으로 사용한 걸 볼 수 있다.

메소드도 마찬가지다.

예를 들어, 계산기에서 더하기는 모든 계산기가 동일하게 동작하기 때문에 아래와 같이 정적 메소드로 작성한다.

public class Calculator {
	// 정적 필드
    static double pi = 3.14159;
    
    // 정적 메소드
    static int plus(int x, int y) {
        int result = x + y
        return result
    }
}

 

주의 사항

정적 멤버는 객체가 없어도 실행되기 때문에, 클래스 내부의 인스턴스 멤버를 사용할 수 없다.(객체 자신의 참조인 this 키워드도 사용불가)

'자바' 카테고리의 다른 글

상속  (1) 2024.04.26
접근 제한자  (0) 2024.04.26
final 키워드  (0) 2024.04.26
객체 지향 프로그래밍  (0) 2024.04.26
자바 문자열 타입  (1) 2024.04.22