클래스 메서드 호출하는 방법
클래스이름.메서드
class MyMath2 {
long a, b;
long add(){ // ** 인스턴스메서드 **
return a + b;
}
static long add(long a, long b){ // ** 클래스메서드(static메서드) **
return a + b;
}
}
class MyMathTest2 {
public static void main(String[] args) {
// 클래스이름.매서드
System.out.println(MyMath2.add(200L, 100L));
//클래스메서드 호출(static메서드 호출) => 객체 생성 필요 없음
MyMath2 mm = new MyMath2(); // 1. 인스턴스 생성(객체 생성)
mm.a = 200L;
mm.b = 100L;
System.out.println(mm/*참조변수*/.add()); // 2. 인스턴스메서드 호출
}
}
클래스 메서드(static 메서드)는 객체 생성 없이 호출이 가능하다!!
class Card { // 인스턴스 변수(개별 속성)
String kind;
int number;
static int width = 100; // 클래스 변수 (공통 속성)
static int height = 250;
인스턴스 변수를 쓰느냐 마느냐에 따라 static을 붙인다.
class MyMath2 {
long a, b;
long add() {return a + b;} // a,b는 인스턴스변수
static long add(long a, long b) {return a + b;} // a,b는 지역변수
인스턴스 변수를 쓰지 않는 경우에, static을 붙인다!!!!!!
-> 객체는 iv들의 묶음(인스턴스 변수)
-> 메서드는 명령문 집합!!
인스턴스메서드=인스턴스 변수로 만들어진 메서드
따라서 인스턴스 생성 = 인스턴스 변수 생성
인스턴스메서드는 인스턴스 변수들로 작업을 해야하기 때문에 객체가 필요한 것
반면에 클래스메서드는 인스턴스 변수 필요없다 = 객체가 필요 없다! = 객체를 만들지 않고 클래스로 직접 호출 가능!