본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( static 메서드 / instance 메서드 )

by ✲ 2020. 7. 8.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

 

인스턴스 메서드

- 인스턴스 생성 후 , '참조변수.메서드()' 으로 호출

- 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드

- 메서드 내에서 인스턴스 변수(iv) 사용 가능 

 

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

- 객체 생성 없이 '클래스이름.메서드이름()' 으로 호출

- 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드

- 메서드 내에서 인스턴스 변수(iv) 사용 불가 

ex) Math.random(); , Math.round();    // 객체생성 없이 클래스이름.메서드이름으로 사용 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MyMathTest2 {
    public static void main (String args[]) {
        System.out.println(MyMath2.add(200L, 100L));        //클래스 메서드 호출
        MyMath2 mm = new MyMath2();                            //객체생성
        mm.a = 200L;
        mm.b = 100L;
        System.out.println(mm.add());                         // 인스턴스메서드 호출 
    }
}
 
class MyMath2{
    long a,b;                            //인스턴스 변수 
    
    long add() {                        // 인스턴스 메서드
        return a+b;  
    }
    
    static long add(long a, long b) {    // 클래스 메서드 
        return a+b;                         // long a, long b 는 지역변수 
    }
}
 
 
cs

출력

300
300

 

static 은 언제 붙여야 할까? 

- 속성(멤버 변수) 중에서 공통 속성에 static을 붙인다. 

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

 

메서드 간의 호출과 참조

- static 메서드는 인스턴스 변수(iv) 사용할 수 없다. 

- static 메서드는 인스턴스 메서드(im)를 호출할 수 없다. 

 

+ static 메서드는 static 메서드를 호출 가능 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
public 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);        // 클래스 변수 사용 가능 
    }
}
 
cs

 

 

반응형

댓글