[Java] 클래스 메서드와 인스턴스 메서드

Minuuu·2023년 1월 31일
0

Java

목록 보기
12/18

클래스 메서드 (static method)

  • 인스턴스와 관련 없는 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수 사용 불가
  • 객체 생성 없이 호출할 수 있다 -> ex01.hello() 클래스이름.메서드명

인스턴스 메서드

  • 인스턴스 멤버와 관련된 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수 사용 가능
  • 객체 생성을 반드시 해야 호출할 수 있다 -> 인스턴스명.hi()
class ex01{

	int a, b; // 인스턴스 변수
    
    void sum(){ // 인스턴스 메서드
    	return a + b; // 인스턴스 변수 사용
    }
    static void sum(int a, int b){ // 클래스 메서드
    	return a + b; // 지역변수 a, b 사용 (매개변수)
    }
}

언제 static을 붙일까?

1. 멤버 변수 중 모든 인스턴스에 공통으로 사용하는 것

class card{
	string kind;	// 무늬
    string number;	// 번호
    
    static int width = 150; // 폭
    static int height = 250; // 높이
}

카드 객체를 보면 무늬번호는 각 객체별로 다른 속성을 가진다
그러나 높이는 공통적인 크기를 가지기에 static으로 정의한다

클래스 변수는 인스턴스를 생성하지 않아도 사용할 수 있다
(클래스 변수는 클래스가 메모리에 올라갈 때 이미 자동적으로 생성)

2. 인스턴스 변수를 사용하지 않을 때 static 사용

class Hi{

	static void hello(int a, int b){ // 인스턴스 변수가 아닌 지역변수 사용
    	return a + b;
    }

}

핵심요약

  1. static은 인스턴스 변수를 사용하지 않을 때, 모든 인스턴스에 공통으로
    사용하는 변수가 있을 때 사용한다
  2. 클래스 메서드는 인스턴스 변수를 사용할 수 없다
  3. 인스턴스 메서드는 객체를 생성해야 쓸 수 있다

복습 전에는 static의 개념을 정확히 몰랐는데 복습하며 정확히 이해할 수 있었다
모두들 단순히 코드가 실행이 되는지보다 정확히 어떻게 동작하는지 이해하길 바란다

profile
꾸준히 한걸음씩 나아가려고 하는 학부생입니다 😄

0개의 댓글