메서드
클래스 내의 멤버 함수
메서드 선언 (반환타입 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 |