공부 STUDY/JAVA

[JAVA] 자바의 정석 연습문제 [6-6, 6-7] static 메서드와 인스턴스 메서드의 차이

CHANGEL 2023. 2. 26. 08:51

[6-7] 문제 [6-6]에서 작성한 클래스 메서드 getDistance()를 MyPoint 클래스의 인스턴스 메서드로 정의하시오.

class MyPoint {
    int x;
    int y;

    MyPoint(int x, int y) {
        this.x = x;
        this.y = y;
    }


    double getDistance(int x1, int y1) {
        return Math.sqrt ((x1 - x) * (x1-x) + (y1 - y) * (y1 - y));
    }
}
public class No1 {

    public static void main(String[] args) {
        MyPoint p = new MyPoint(1,1)


    }
}

 

이전 문제의 static 메서드를 인스턴스 메서드로 변경하는 문제였다. 

static 메서드의 경우 메서드 내에서 인스턴스 변수를 사용하지 않았다. 대신 매개변수로 작업에 필요한 값을 제공받아야 했다. 그래서 인스턴스와 무관하기 때문에 static 메서드로 선언할 수 있었다.

 

하지만 인스턴스 메서드는 인스턴스 변수인 x,y를 사용해서 작업하므로 매개변수로 x1과 y1만을 제공받으면 된다. 인스턴스와 관계가 있으므로 static을 붙일 수 없다.