6-26~29 인스턴스 메서드, static 메서드

oyeon·2020년 12월 23일
0

(완)객체지향 개념

목록 보기
12/37

인스턴스 메서드

  • 인스턴스 생성 후, '참조변수.메서드이름()'으로 호출
  • 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수(iv) 사용가능

static 메서드(클래스 메서드)

  • 객체생성없이 '클래스이름.메서드이름()'으로 호출 (ex. Math.round())
  • 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드
  • 메서드 내에서 인스턴수 변수(iv) 사용불가

인스턴스 멤버(iv, im)을 사용하지 않는 메서드에 static을 붙인다.

  • static 메서드는 인스턴스 변수(iv) 사용 불가
class TestClass {
    int iv;
    static int cv;
    
    void instanceMethod(){
    	System.out.println(iv);	// 인스턴스 변수 사용 가능
        System.out.println(cv);	// 클래스 변수 사용 가능
    }
    
    static void staticMethod(){
    	System.out.println(iv);	// 에러!!! 인스턴스 변수 사용 불가
        System.out.println(cv);	// 클래스 변수 사용 가능
    }
}
  • static 메서드는 인스턴스 메서드(im) 호출 불가
class TestClass2 {
    void instanceMethod() {
    	System.out.println(iv);
        System.out.println(cv);
    }
    static void staticMethod() {
    	System.out.println(iv);	// 에러!!!
        System.out.println(cv);
    }
    
    void instanceMethod2(){
    	instanceMethod();	// 인스턴스 메서드 호출 가능
        staticMethod();		// static 메서드 호출 가능
    }
    
    static void staticMethod2(){
    	instanceMethod();	// 에러!!! 인스턴스 메서드 호출 불가
        staticMethod();		// static 메서드 호출 가능
    }
}
  • static 메서드는 static 메서드 호출가능? yes
  • static 메서드는 인스턴스 메서드 호출가능? no
  • static 메서드는 인스턴스 변수 사용가능? no
  • static 메서드는 인스턴스 멤버(iv, im)사용 불가능한 이유?
    -> static 메서드는 객체 유무 상관없이 호출 가능(instanceMethod2, staticMethod2 어디서든 호출 가능)한데, static 메서드 호출시에 객체(iv, im)가 있을지 없을지 모르기 때문에
profile
Enjoy to study

0개의 댓글