같은 클래스에 속한 멤버들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능하다. 그런데 인스턴스 멤버가 존재하는 시점에 클래스 멤버는 항상 존재하지만, 클래스멤버가 존재하는 시점에 인스턴스 멤버가 존재하지 않을 수도 있기 때문에 클래스 멤버가 인스턴스 멤버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야한다.
<메서드 호출>
class TestClass {
void instanceMethod() {} //인스턴스메서드
static void staticMethod() {} //static메서드
void instanceMethod2() { //인스턴스메서드
instanceMethod(); //다른 인스턴스메서드를 호출한다.
staticMethod(); //static메서드를 호출한다.
}
static void staticMethod2() { //static메서드
instanceMethod(); //에러! 인스턴스 메서드를 호출할 수 없다.
staticMethod(); //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); // 클래스 변수는 사용할 수 있다.
출처: 자바의 정석 기초편(저자: 남궁성, 출판사: 도우출판)
'java > 객체지향' 카테고리의 다른 글
[객체지향] 생성자 (0) | 2021.07.12 |
---|---|
[객체지향] 오버로딩(overloading) (0) | 2021.07.09 |
[객체지향] static 메서드와 인스턴스 메서드 (0) | 2021.07.09 |
[객체지향] return문과 반환값 (0) | 2021.07.09 |
[객체지향] 메서드 (0) | 2021.07.08 |