공부 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을 붙일 수 없다.