class Math2{
long a, b;
long add() { //인스턴스 메서드
return a+b;
}
static long add(long, longb) { //클래스 메서드(static 메서드)
return a + b;
}
}
호출
class Math2{
public static void main(String arg[]){
System.out.println(Math2.add(200L,100L); 클래스메서드 호출 '클래스이름.메서드'
Math2 mm = new Math2(); // 인스턴스 생성 (iv 생성)
mm.a = 200L;
mm.b = 100L;
System.out.printl(mm.add()); //인스턴스 메서드 호출 (iv로 작업)
- 인스턴스 메서드
- 인스턴스 생성 후 '참조변수.메소드()'로 호출
- 인스천스 멤버(iv, im)와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용가능
- *인스턴스 변수는 class 전체사용*
- static 메서드 (클래스 메서드)
- 객체생성없이 '클래스이름.메서드이름()'으로 호출
- 인스턴스 멤버(iv,im)와 관련없는 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv)사용불가
- *static은 지역변수 메소드 내에서만 사용*
**객체는 iv의 묶음**
***메서드간 호출***
public class Ex6_4 {
int iv; // 인스턴스 변수 , 객체생성 후 사용가능
static int cv; // 클래스 변수, 언제나 사용가능
void instanceMethod() { // 인스턴스 메서드, 객체 생성후 호출가능
System.out.println(iv);// 인스턴스 변수를 사용할수있다. ok
System.out.println(cv);// 클래스 변수를 사용할수있다. ok
}
static void staticMethod() { //static메서드
System.out.println(iv); // 에러, 인스턴스 변수를 사용할수 없다.
System.out.println(cv); // 클래스 변수는 사용할수있다
}
} //end of class
결론 static 메서드는 인스턴스 메서드를 호출할수없다.
'JAVA' 카테고리의 다른 글
객체지향 생성자 (constructor), 기본 생성자(default constructor) (1) | 2022.09.25 |
---|---|
객체지향 메서드 오버로딩(overloading) (0) | 2022.09.25 |
객체지향 호출 스택(call stack) (0) | 2022.09.24 |
객체지향 매서드 (1) | 2022.09.24 |
객체지향 선언 위치에 따른 변수의 종류 (0) | 2022.09.24 |