(Java) static 메서드와 인스턴스 메서드

Jayden·2023년 2월 27일

Java

목록 보기
14/35

클래스 메서드 호출하는 방법
클래스이름.메서드

class MyMath2 {
    long a, b;

    long add(){			// ** 인스턴스메서드 **
            return a + b;
    }

    static long add(long a, long b){ // ** 클래스메서드(static메서드) **
        return a + b;
    }
}

class MyMathTest2 {
    public static void main(String[] args) {
    	//				   클래스이름.매서드
        System.out.println(MyMath2.add(200L, 100L)); 
        //클래스메서드 호출(static메서드 호출) => 객체 생성 필요 없음
        
        
        MyMath2 mm = new MyMath2(); 			 // 1. 인스턴스 생성(객체 생성)
        mm.a = 200L;
        mm.b = 100L;
        System.out.println(mm/*참조변수*/.add());  // 2. 인스턴스메서드 호출		
    }
 }

클래스 메서드(static 메서드)는 객체 생성 없이 호출이 가능하다!!

그럼 언제 static을 붙여야 할까?

  • 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.
class Card {				   // 인스턴스 변수(개별 속성)
	String kind;
  	int number;
    
    static int width = 100;    // 클래스 변수 (공통 속성)
    static int height = 250; 
    
    
 인스턴스 변수를 쓰느냐 마느냐에 따라 static을 붙인다.
 class MyMath2 {
 	long a, b;
    
    	long add()					{return a + b;} // a,b는 인스턴스변수
 static long add(long a, long b) 	{return a + b;} // a,b는 지역변수
 
 
 
 인스턴스 변수를 쓰지 않는 경우에, static을 붙인다!!!!!!
 

-> 객체는 iv들의 묶음(인스턴스 변수)
-> 메서드는 명령문 집합!!

인스턴스메서드를 호출하려면 왜 객체가 필요??

인스턴스메서드=인스턴스 변수로 만들어진 메서드
따라서 인스턴스 생성 = 인스턴스 변수 생성
인스턴스메서드는 인스턴스 변수들로 작업을 해야하기 때문에 객체가 필요한 것

반면에 클래스메서드는 인스턴스 변수 필요없다 = 객체가 필요 없다! = 객체를 만들지 않고 클래스로 직접 호출 가능!

0개의 댓글