Java/기본

[Java / 기본] 메서드

2024. 12. 20. 13:32

메서드

클래스 내의 멤버 함수

메서드 선언 (반환타입 void o)

void show() {
	// 메서드 호출 시 실행할 코드
}
반환타입 메서드명() {
    // 메서드 호출 시 실행할 코드
}

void

메서드 반환타입으로 쓰이고 반환값 없음

 

메서드 선언 (반환타입 void x)

  • 반환 타입에 맞는 타입 반환
int getId() {
    // 메서드 호출 시 실행할 코드
    return id;
}
반환타입 메서드명() {
    // 메서드 호출 시 실행할 코드
    return 반환값;

}

return

값을 반환하는 키워드

  • `void`에서는 return;을 사용하여 메서드 종료
  • 메서드만이 아닌 조건문, 반복문에서도 사용
  • 반환값 없이도 `return`으로만 메서드, 조건문, 반복문, 프로그램 종료 가능

 

메서드 선언 (매개변수 o)

int sum(int a, int b) {
    // 메서드 호출 시 실행할 코드
    return total;
}

매개변수

메서드 호출로 전달받은 인수

  • 매개변수는 없거나 한개, 여러개가 올 수 있음

 

메서드 호출 (매개변수 x)

show()
메서드명()

 

메서드 호출 (매개변수 o)

sum(a, b)
메서드명(매개변수)

 

객체 내의 메서드 호출 (매개변수 x)

a.show()
객체명.메서드명()

 

객체 내의 메서드 호출 (매개변수 o)

  • 매개변수의 타입과 수에 맞는 인수를 넣으면 됨
a.sum(1, 2)
객체명.메서드명(인수)

 

메서드 오버로딩 (Method Overloading)

같은 메서드명으로 형태만 다르게 해서 여러 개의 메서드를 만드는 행위

  • 매개변수에 디폴트값을 줄 때 유용함
  • 메서드의 매개변수에 변화를 주고 싶은데 기능이 같은 경우

매개변수의 개수에 따른 오버로딩

int add(int a, int b) {
    return a + b;
}

int add(int a, int b, int c) {
    return a + b + c;
}

 

반환타입과 매개변수 타입에 따른 오버로딩

  • 단순히 반환타입만 다른 경우에는 컴파일러가 구분할 수 없기 때문에 오버로딩으로 인정되지 않음
int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}

getter

필드 한개를 반환하는 메서드

  • 이름은 `get` + 필드명 (첫글자 대문자)으로 작성
int getPrice() {
    return this.price;
}

 

setter

필드 한개를 변경하는 메서드

  • 이름은 `set` + 필드명 (첫글자 대문자)으로 작성
int setPrice(int price) {
    this.price = price;
}

this

객체 자신

객체 내의 필드 접근

this.price
this.필드명

 

객체 내의 메서드 접근

this.getPrice()
this.메서드명()

 

객체 내의 생성자 접근

this()

 

getter/setter 자동 생성

  • `shift + alt + s / r`


위임 메서드 (delegate method)

특정 객체가 다른 객체에게 실제 작업을 위임하도록하는 메서드

class Printer {
    public void print(String message) {
        System.out.println(message);
    }
}

class DelegatePrinter {
    private Printer printer = new Printer();

    public void printMessage(String message) {
        printer.print(message);
    }
}

public class Main {
    public static void main(String[] args) {
        DelegatePrinter delegatePrinter = new DelegatePrinter();
        delegatePrinter.printMessage("Hello, this is a delegated message!");
    }
}

상속과 위임의 차이

언뜻보면 상속과 위임은 같아보이지만, 사용하는 경우에 따라 다르다. 상속은 자식 클래스가 부모 클래스의 속성과 메서드를 물려받는다. 재사용성과 다형성을 제공하지만, 결합도가 높다는 단점이 존재한다. 반면 위임은 한 객체가 자신의 작업을 다른 객체에게 맡기는 방식이기 때문에 유연하고 결합도가 낮다는 특징이 존재한다. 상속은 클래스 간 관계에 강한 결합도가 요구될 때 사용되고, 위임은 일부 기능을 다른 객체에 맡겨 분리하고 낮은 결합도가 요구될 때 사용된다.

 

'Java > 기본' 카테고리의 다른 글

[Java / 기본] 키워드  (1) 2024.12.20
[Java / 기본] 생성자  (0) 2024.12.20
[Java / 기본] 객체지향 (OOP)  (0) 2024.12.19
[Java / 기본] 배열  (0) 2024.12.19
[Java / 기본] 반복문  (2) 2024.12.18
'Java/기본' 카테고리의 다른 글
  • [Java / 기본] 키워드
  • [Java / 기본] 생성자
  • [Java / 기본] 객체지향 (OOP)
  • [Java / 기본] 배열
개발하는 벌꿀오소리
개발하는 벌꿀오소리
겁없는 벌꿀오소리처럼 끊임없이 도전하자!
  • 글쓰기 관리
  • 개발하는 벌꿀오소리
    벌꿀오소리의 개발 노트
    개발하는 벌꿀오소리
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • Java (60)
        • 기본 (23)
        • 모듈 (8)
        • 자료구조 (5)
        • 알고리즘 (0)
        • 파일 입출력 (5)
        • JDBC (5)
        • Spring Boot (14)
      • Oracle (13)
      • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 공지사항

  • hELLO· Designed By정상우.v4.10.3
개발하는 벌꿀오소리
[Java / 기본] 메서드
상단으로

티스토리툴바