static 메서드

MIN·2023년 9월 15일

Java

목록 보기
7/36
post-thumbnail
이 글은 자바의 정석 기초편을 공부한 내용을 토대로 작성한 글입니다.
혹시 잘못된 내용이 있을 시 댓글로 알려주시면 감사하겠습니다 ^U^

🥨 static Method

class Method라고도 한다.
메서드 앞에 static이 붙어있으면 '클래스 메서드'이고 그렇지 않으면 '인스턴스 메서드'다. 이전 static 변수에서 그랬듯 static메서드도 마찬가지로 객체생성을 하지 않고도 사용이 가능하다!

반대로 인스턴스 변수와 인스턴스 메서드는 꼭 객체생성을 해야만 사용을 할 수 있다.

class Pen {
	static String color = "검정색";	// static변수
    String kind;					  // 인스턴스 변수
    
    static void draw1() {	// static 메서드
    	System.out.println(color+"펜을 이용해 그리는 중");
    }
    void draw2() {			// 인스턴스 메서드
    	System.out.println(kind +"펜을 이용해 그리는 중");
    }
}

class Drawing {
	public static void main(String[] args) {
    	System.out.println(Pen.color);	// 객체생성없이 변수 사용가능 
        Pen.draw1();	                // 객체생성없이 변수 사용가능
        
        System.out.println(Pen.kind);	// 오류 발생
        Pen.draw2();					// 오류 발생
        // 위의 인스턴스 변수와 인스턴스 메서드는 객체를 생성하지 않고
        // 바로 사용하면 오류가 발생하므로 아래와 같이 객체를 생성해야 한다.
        
        Pen p = new Pen();	// 객체 생성
        p.kind = "형광펜";
        System.out.println(p.kind);	
        p.draw2();
    }
}
       

🥨 static을 언제 붙여야 할까?

1. 모든 객체가 공통적으로 같아야 하면 static을 붙여준다.

static을 붙인 변수는 저장공간을 공유하므로 해당 변수는 모든 객체에게 같은 값을 부여할 수 있다. 이처럼 모두 같아야 하는 변수나 메서드 앞에는 static을 붙여 한 번에 정의하는 것이 좋다.

2. 작성한 메서드에 인스턴스 변수 또는 인스턴스 메서드를 사용하지 않는다면 static을 붙인다.

static변수는 객체 생성을 하지 않고도 호출이 가능하다.
이 말은 호출이 되었을 때 객체가 없을 수도 있다는 뜻이다. 이 때문에 static 메서드 내에서는 인스턴스 변수와 인스턴스의 메서드 사용이 불가하다. 오류 발생!

따라서 메서드를 작성한 후 해당 메서드 내부에 인스턴스 변수를 사용하지 않는다면 staitc을 붙인다.

profile
기초부터 시작하는 감쟈 ※ 소개글 확인해주세요!! ※

0개의 댓글