변수에서 그랬던 것과 같이, 메서드 앞에 static이 붙어 있으면 클래스메서드이고
붙어있지않으면 인스턴스 메서드 입니다.
클래스 메서드도 클래스변수처럼 객체를 생성하지 않고도 클래스이름,메서드이름(매개변수)와 같은 식으로
호출이 가능합니다
인스턴스 메서드는 반드시 객체를 생성해야만 호출할 수 있다.
인스턴스 메서드는 변수를 필요하는 메서드입니다.
인스턴스와 관계없는(인스턴스 변수나 인스턴스 메서드를 사용하지 않는)메서드를 클래스 메서드(static)로 정의합니다.
클래스를 설계할 때 맴버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙입니다.
인스턴스는 서로 독립적이기 때문에 각 인스턴스의 변수(iv)는 서로 다른 값을 유지합니다
모든 인스턴스에서 같은 값이 유지되어야 하는 변수는 static을 붙여서 클래스변수로 정의해야 합니다.
클래스 변수(static)는 인스턴스를 생성하지 않아도 사용할 수 있습니다.
메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려합니다.
클래스 맴버와 인스턴스 맴버간의 참조와 호출
static void staticMethod2() {//static 메서드
instanceMethod();//에러!! 인스턴스메서드,인스턴스 변수 를 호출할 수 없다
staticMethod();// static 메서드는 호출 할 수 있다.
}
static메서드는 인스턴스 메서드를 호출할수 없습니다
메서드 간의 호출
class TestClass2{
int iv;// 인스턴스변수
static int cv;// 클래스 변수
void instanceMethod(){// 인스턴스메서드
System.out.println(iv);// 인스턴스 변수를 사용할 수 있다.
System.out.println(cv);// 클래스변수를 사용할 수 있다.
}
static void staticMethod(){// static 메서드
System.out.println(iv);// 에러! 인스턴스 변수를 사용할 수 없다.
System.out.println(cv);// 클래스 변수를 사용할 수 있다.
}
}// end of class
인스턴스메서드는 인스턴스변수를 사용할 수 있지만 static메서드는 인스턴스변수를 사용할수없습니다.
'JAVA > 객체지향' 카테고리의 다른 글
생성자 (0) | 2023.02.22 |
---|---|
오버로딩 ,오버라이딩 (0) | 2023.02.22 |
기본형 매개변수와 참조형 매개변수 (0) | 2023.02.22 |
JVM의 메모리 구조 (0) | 2023.02.22 |
변수와 메서드 (0) | 2023.02.21 |