[자바의 정석] static 메서드와 인스턴스 메서드, 오버로딩

2023. 9. 21. 10:50·📝 끄적끄적/🖥️ 자바의 정석

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

인스턴스 메서드

  • 인스턴스 생성 후 ‘참조변수. 메서드이름()’로 호출
  • 인스턴스 멤버와 관련된 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수 사용가능

 

static 메서드(클래스메서드)

  • 객체생성없이 ‘클래스이름. 메서드이름()’으로 호출
  • 인스턴스 멤버와 관련없는 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수 사용불가

 

결론

메서드 내에서 인스턴스 변수를 쓰냐 안 쓰냐의 차이다.

class MyMath2 {
	long a, b;
	
	//인스턴스변수 a, b만을 이용해서 작업하므로 매개변수가 필요없다.
	long add(){ 
		return a + b;  // a, b는 인스턴스변수
	} 

	//인스턴스변수와 관계없이 매개변수만으로 작업이 가능하다.
	static long add(long a, long b){
		return a + b;  //a, b는 지역변수
	}
}

class MyMathTest2 {
	public static void main(String args[]) {
		//클래스메서드 호출. 인스턴스 생성없이 호출가능
		System.out.println(MyMath2.add(200L, 100L));

		MyMath2 mm = new MyMath2(); // 인스턴스를 생성
		mm.a = 200L;
		mm.b = 100L;
		// 인스턴스메서드는 객체생성 후에만 호출이 가능함.
		System.out.println(mm.add());
	}
}

 

 

❓ static을 언제 붙여야 할까

  • 속성(멤버 변수)중에서 공통 속성에 static을 붙인다

  • 인스턴스 멤버를 사용하지 않는 메서드에 static을 붙인다.

공통 메서드에 static 붙이는게 아니다!!!

 

메서드 간의 호출과 참조

  • static 메서드는 인스턴스 변수를 사용할 수 없다.

→ static메서드는 객체 생성없이 호출가능한데 인스턴스 변수는 객체 생성이 필수기 때문

 

❓ 왜 인스턴스 변수는 객체 생성이 필수일까

-> 이 메서드를 호출했을 때 객체가 있을지 없을지 보장이 안되기 때문에

 

  • static 메서드는 인스턴스 메서드를 호출할 수 없다.

오버로딩

오버로딩의 올바른 예

  • 매개변수는 다르지만 같은 의미의 기능수행한다.
class MyMath3 {
	int add(int a, int b) {
		System.out.print("int add(int a, int b) - ");
		return a+b;
	}
	
	long add(int a, long b) {
		System.out.print("long add(int a, long b) - ");
		return a+b;
	}

	int add(int[] a) {		// 배열의 모든 요소의 합을 결과로 돌려준다.
		System.out.print("int add(int[] a) - ");
		int result = 0;
		for(int i=0; i < a.length;i++) {
			result += a[i];
		}	
		return result;
	}
}
저작자표시 비영리

'📝 끄적끄적 > 🖥️ 자바의 정석' 카테고리의 다른 글

[자바의 정석] 제어자, 캡슐화  (0) 2023.09.24
[자바의 정석] 상속, 참조변수 super, 생성자 super()  (0) 2023.09.23
[자바의 정석] 생성자, 변수/멤버 변수의 초기화  (0) 2023.09.22
[자바의 정석] 기본형/참조형 매개변수, 참조형 반환타입  (0) 2023.09.20
[자바의 정석] 클래스 변수와 인스턴스 변수, 호출스택  (0) 2023.09.19
[자바의 정석] 클래스와 객체  (0) 2023.09.17
'📝 끄적끄적/🖥️ 자바의 정석' 카테고리의 다른 글
  • [자바의 정석] 상속, 참조변수 super, 생성자 super()
  • [자바의 정석] 생성자, 변수/멤버 변수의 초기화
  • [자바의 정석] 기본형/참조형 매개변수, 참조형 반환타입
  • [자바의 정석] 클래스 변수와 인스턴스 변수, 호출스택
현주먹
현주먹
끄적끄적 개발.log
  • 현주먹
    현주먹의 개발로그
    현주먹
  • 전체
    오늘
    어제
    • 전체글 (162)
      • 👶🏻 CS (15)
        • Operating System (8)
        • Database (4)
        • Data Structure (2)
        • Software Engineering (1)
      • 💻 Dev (54)
        • Java & OOP (24)
        • Spring (4)
        • JPA (5)
        • Test Code (1)
        • Database (1)
        • JSP & Servlet (13)
        • Etc (6)
      • 💡 Algorithm (25)
        • 인프런 (9)
        • 백준 (16)
      • 🛠 DevOps & Tool (11)
        • Linux (4)
        • AWS (1)
        • Git (2)
        • Etc (4)
      • 📝 끄적끄적 (57)
        • 후기 및 회고 (5)
        • TDD, 클린 코드 with Java 17기 (3)
        • F-Lab (23)
        • 🖥️ 자바의 정석 (11)
        • 📖 Clean Code (3)
        • 항해99 코테 스터디 (11)
  • 블로그 메뉴

    • 🐈‍⬛ GitHub
    • TIL
  • 인기 글

  • 태그

    개발자멘토링
    PostGreSQL함수
    에프랩
    JPA
    백준
    항해99
    개발자취업
    코딩테스트준비
    f-lab 후기
    C
    til
    F-Lab
    자바의정석
    데브클럽
    오라클
    로또 미션
    jsp
    TDD 클린 코드 with Java
    오블완
    인프런 단어뒤집기
    자바의신절판
    ==와 equals()
    99클럽
    인프런 특정문자뒤집기
    NextSTEP
    백준10250
    티스토리챌린지
    코테스터디
    객체지향
    에프랩 후기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
현주먹
[자바의 정석] static 메서드와 인스턴스 메서드, 오버로딩
상단으로

티스토리툴바