[JAVA] static 메서드와 인스턴스 메서드

2021. 7. 16. 20:32·Computer Science/Programming Language

static 메서드와 인스턴스 메서드

메서드 앞에 static이 붙으면 static 메서드라 함 (클래스 메서드라고도 함)

static이 안 붙으면 인스턴스 메서드라 함

두 메서드를 구별하는 기능적인 차이는 인스턴스 멤버의 사용 여부이다. 

 

인스턴스 메서드

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

인스턴스 변수(iv), 인스턴스 멤버(im)와 관련된 작업을 함

메서드 내에서 iv 사용 가능

 

static 메서드

객체 생성 X

'클래스 이름.메서드 이름()'으로 호출함

인스턴스 변수(iv), 인스턴스 멤버(im)와 관련되지 않은 작업을 함

메서드 내에서 iv 사용 불가능

 

 

예시1

class mymath{
	long a,b; //인스턴스 변수
    
    long add(){	//인스턴스 메서드
    	return a+b;
    }
    
    static long add(long a, long b){ 	//클래스 메서드(static 메서드)
    	return a+b; //지역변수 a,b
    }   
}

static메서드와 인스턴스 메서드 호출은 다음과 같다. 

class example{
	public static void main(Stringp[] args){
    
    	System.out.println(mymath.add(200L,100L); //클래스(static)메서드 호출
 
 
    	mymath mm = new mymath();	//인스턴스 생성
        mm.a = 200L;
        mm.b = 100L;
        System.out.println(mm.add()); // 인스턴스 메서드 호출
   }
}

 

예시2

class Test{
	int iv;	//인스턴스 변수
   	 static int cv; //클래스 변수
    
    void instanceMethod1(){}
    static void staticMethod1(){}
    
    void instanceMethod(){
    	System.out.println(iv);
        System.out.println(cv);
        //iv,cv 모두 사용 가능
        
        instanceMethod1();
        staticMethod1();
        //인스턴스 메서드와 static메서드 모두 호출 가능
    }
    
    static void staticMethod(){
    	//System.out.println(iv);	//iv 사용 불가능!!
        System.out.println(cv);
        
       //instanceMethod1();			//인스턴스 메서드 호출 불가능!!
        staticMethod1();
        
    }
    
}

즉!! static 메서드는 인스턴스 변수와 인스턴스 메서드 모두 호출 불가능!! 나머지는 가능

 

 

저작자표시 비영리 변경금지 (새창열림)

'Computer Science > Programming Language' 카테고리의 다른 글

[Python] 유사 딕셔너리 defaultdict()  (0) 2022.06.18
[Python] 입출력  (0) 2021.07.17
[JAVA] 기본형 매개변수와 참조형 매개변수, 참조형 반환타입  (0) 2021.07.16
[JAVA] 호출 스택(call stack)  (0) 2021.07.16
[JAVA] 메서드와 return문  (0) 2021.07.15
'Computer Science/Programming Language' 카테고리의 다른 글
  • [Python] 유사 딕셔너리 defaultdict()
  • [Python] 입출력
  • [JAVA] 기본형 매개변수와 참조형 매개변수, 참조형 반환타입
  • [JAVA] 호출 스택(call stack)
BS Kwak
BS Kwak
  • BS Kwak
    Slow but steady wins the race
    BS Kwak
  • 전체
    오늘
    어제
    • 카테고리 (161)
      • Project (2)
      • Next.js (3)
      • HTML+CSS+JS (17)
      • Computer Science (139)
        • Programming Language (52)
        • 자료구조와 알고리즘 (75)
        • Digital circuit (3)
        • 기타 error (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    cmd error
    오블완
    mysql error
    LNK2001
    c++error
    leetcode
    티스토리챌린지
    런타임 에러
    해시
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
BS Kwak
[JAVA] static 메서드와 인스턴스 메서드
상단으로

티스토리툴바