* 클래스멤버와 인스턴스멤버 간의 참조와 호출
: 같은 클래스에 속한 멤버들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능하다. 단, 클래스멤버가 인스턴스멤버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야 한다.
그 이유는 인스턴스 멤버가 존재하는 시점에 클래스멤버는 항상 존재하지만, 클래스멤버가 존재하는 시점에 인스턴스 멤버가 존재할 수도 있고 존재하지 않을 수도 있기 때문이다.
<예문>
package Exercise; class TestClass1 { void instanceMethod() { System.out.println("instanceMethod()");}; //인스턴스 메서드 static void staticMethod() {System.out.println("staticMethod()");}; //static 메서드 void instanceMethod2(){ //인스턴스 메서드 System.out.println("instanceMethod2()"); instanceMethod(); //다른 인스턴스메서드를 호출 staticMethod(); //static 메서드를 호출 } static void staticMethod2(){ System.out.println("staticMethod2()"); TestClass1 tt = new TestClass1(); tt.instanceMethod(); staticMethod(); } public static void main(String[] args) { // TODO Auto-generated method stub /*TestClass1 tt = new TestClass1(); tt.instanceMethod(); TestClass1.staticMethod(); tt.instanceMethod2(); TestClass1.staticMethod2();*/ TestClass2 tt2 = new TestClass2(); tt2.instanceMethod(); tt2.staticMethod(); } } 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(new TestClass2().iv); System.out.println(cv); //클래스변수 사용 가능 } }
'개발 관련 지식 > 자바(Java)' 카테고리의 다른 글
[자바] 오버라이딩(Overriding) (0) | 2014.07.02 |
---|---|
[자바] 변수의 초기화 (0) | 2014.07.02 |
[자바] 생성자(Constructor) (0) | 2014.06.30 |
[자바] 메서드 오버로딩(method overloading) (0) | 2014.06.24 |
[자바] 클래스메서드(static 메서드)와 인스턴스메서드 (0) | 2014.06.24 |