[Java] 인스턴스 멤버와 정적 멤버

재피터노트북·2022년 10월 6일
0

인스턴스 멤버란?

인스턴스 멤버란 객체를 생성한 후 사용할 수 있는 필드와 메소드를 말하는데, 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 부름.
인스턴스 필드와 메서드는 객체에 소속된 멤버이기 때문에 객체 없이는 사용할 수 없음.

  • 인스턴스 메서드 선언

package sec05.exam01;

public class Car {

    String model;
    int speed;

    // 생성자
    Car(String model) {
        this.model = model;
    }

    // 메서드
    void setSpeed(int speed) {
        this.speed = speed;
    }

    void run() {
        for (int i=0;i<=50;i+=10) {
            this.setSpeed(i);
            System.out.println(this.model + "가 달립니다.(시속 : " + this.speed + "km/h");
        }
    }
}
  • 출력

package sec05.exam01;

public class CarExample {

    public static void main(String[] args) {
        Car myCar = new Car("포르쉐");
        Car yourCar = new Car("벤츠");

        myCar.run();
        yourCar.run();

    }
}

위에 출력코드 보면 인스턴스 필드와 메서드는 인스턴스화해서 객체를 하나 만들어서 사용해야한다.

정적 멤버란?

정적은 고정된이란 의미. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 메소드를 말함. 이들을 각각 정적 필드 정적 메서드라고 함.

  • 정적 멤버 선언

package sec05.exam02;

public class Calculator {
    static double pi = 3.14159;

    static int plus(int x, int y) {
        return x + y;
    }

    static int minus(int x, int y) {
        return x - y;
    }

}
  • 출력 코드

package sec05.exam02;

public class CalculatorExample {

    public static void main(String[] args) {

        double result = 10 * 10 * Calculator.pi;
        int result2 = Calculator.plus(10, 5);
        int result3 = Calculator.minus(10, 5);

        System.out.println("result = " + result);
        System.out.println("result2 = " + result2);
        System.out.println("result3 = " + result3);
    }
}

출력코드와 같이 정적 메서드와 필드는 클래스 이름으로 접근해서 객체를 따로 만들지 않고 사용할 수 있다.하지만 객체 참조 변수로도 접근이 가능함.

  • 정적 메소드 선언시 주의할점

    • 객체가 없어도 실행된다는 특징 때문에 정적 메소드를 선언할 때는 이들 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없음.
profile
난 이 재 선

1개의 댓글

comment-user-thumbnail
2022년 10월 13일

오~~ 이해가 잘 되는 글 입니다

답글 달기