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

2023. 12. 17. 17:42·Java

클래스 메서드(static 메서드)와 인스턴스 메서드 


[ static 메서드 ]

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

iv 사용x

[ 인스턴스 메서드 ]

-객체 생성 후 '참조변수.메서드명()'으로 호출
-인스턴스 멤버(iv,im)와 관련있는 작업하는 메서드
-메서드 내 인스턴스 변수(iv) 사용가능

iv 사용o

 

*변수 : 공통 값 유지 -> static 붙임

메서드 : 인스턴스 변수,메서드 사용하지 않음 ->static 고려

 

 

클래스 멤버와 인스턴스 멤버간 호출 


 

public class Test {
	int iv;           //인스턴스 변수
	static int cv;    //클래스 변수
	
	void im() {};           //인스턴스 메서드
	static void sm() {};    //static 메서드
	
	void im2() {
		im();
		sm();
		System.out.println(iv);
		System.out.println(cv);
	}
	
	static void sm2() {  //static메서드
		im();  //에러.  인스턴스메서드 호출불가 
		sm();
		System.out.println(iv); //에러. 인스턴스변수 사용불가 
		System.out.println(cv);
	}
}

*간단 정리

  인스턴스 멤버 클래스 멤버
인스턴스 변수, 메서드 O X
클래스 변수, 메서드 O O

 

클래스 멤버가 인스턴스 멤버 사용하고자 할 경우 먼저 객체 생성해야 함.

why?인스턴스 멤버가 아직 존재하지 않을 수 있어서 (인스턴스 멤버 존재시점엔 클래스 멤버는 항상 존재) 

public class Test {
	int iv = 1;
	static int cv = iv; //에러. 
	static int cv2 = new Test().iv; //객체 생성 후 사용가능
}

 

+)참고

TestClass tc = new TestClass();
int result = tc.im();

→int result = new TestClass().im(); //한줄로

'Java' 카테고리의 다른 글

[Java] 생성자(Constructor)  (0) 2023.12.18
[Java] 오버로딩(overloading)  (0) 2023.12.17
[Java] 변수와 메서드  (0) 2023.12.17
[Java] 객체 지향 언어, 클래스와 객체  (0) 2023.12.10
[Java] 배열 비교, 출력, 복사, 정렬 (Arrays)  (0) 2023.12.09
'Java' 카테고리의 다른 글
  • [Java] 생성자(Constructor)
  • [Java] 오버로딩(overloading)
  • [Java] 변수와 메서드
  • [Java] 객체 지향 언어, 클래스와 객체
Naah
Naah
  • Naah
    blueprint
    Naah
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • Java (28)
      • Kotlin (0)
      • TypeScript (7)
      • React (22)
      • Next.js (1)
      • Spring (22)
      • JPA (12)
      • Spring Data JPA (6)
      • Querydsl (1)
      • Error (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • manage
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Naah
[Java] 클래스 메서드(static 메서드)와 인스턴스 메서드
상단으로

티스토리툴바