class MyMath2 {
long a, b;
long add() { //인스턴스 메소드
retun a + b;
}
static long add(long a, long b) { //클래스메소드(static메소드)
return a + b;// a,b는 지역변수(Local Variable)
}
}
class MyMath2Test {
public static void main(String args[]){
System.out.print(MyMath2.add(200L, 100L));//클래스메소드 호출
//클래스 메소드는 객체 없이 호출 가능
MyMath2 mm = new MyMath2(); //인스턴스 생성
mm.a = 200L;
mm.b = 100L;
System.out.println(mm.add()); //인스턴스메소드 호출
}
}
class Card {
String kind; //무늬
int Number; //숫자
static int width = 100; //폭
static int height = 250; //넓이
}
ex) 게임 카드로 예를 들어보자. 카드를 객체화 한다고 가정했을 때,
카드의 폭과 넓이는 바뀌지 않지만 카드의 무늬와 숫자는 바뀐다.
class MyMath2 {
long a, b;
long add() {
return a + b; //a, b는 인스턴스 변수
}
long add(long a, long b) { // a,b는 지역변수
return a + b;
}
}
class TestClass2 {
int iv;
static int cv;
void instanceMethod() { //인스턴스 메소드
System.out.println(iv); // 인스턴스 변수를 사용할 수 있다.
System.out.println(cv); //클래스 변수를 사용 할 수 있다.
static void staticMethod() { //인스턴스 메소드
System.out.println(iv); // Error!! : 인스턴스 변수를 사용할 수 없다.
System.out.println(cv); //클래스 변수를 사용 할 수 있다.
}
}
class TestClass {
instanceMethod() {} // 인스턴스 메소드
static void staticMethod() {} //static메소드
void instanceMethod2() { //인스턴스 메소드
instanceMethod(); // 다른 인스턴스 메소드를 호출한다.
staticMethod(); //static 메소드를 호출한다.
static void staticMethod() { //인스턴스 메소드
instanceMethod(); // Error!! : 인스턴스 메소드를 호출할 수 없다.
staticMethod();; //클래스 변수를 호출 할 수 있다.
}
}