728x90
반응형
[Java] 37. 메서드 오버로딩
1. 메서드 오버로딩
(1) 메서드 오버로딩의 정의: 메서드 오버로딩(Method Overloading)은 같은 이름의 메서드를 여러 개 정의하는 것을 의미한다. 이 때 메서드의 시그니처(Signature), 즉 메서드의 이름과 파라미터가 달라야 한다.
-메서드 오버로딩을 사용하면, 같은 기능을 하는 메서드들을 하나의 이름으로 통일할 수 있어, 가독성을 높일 수 있다.
*메서드 오버로딩은 System.out.println이다.
-System.out.println은 하나의 메서드로 여러 자료형을 출력할 수 있는, 대표적인 메서드 오버로딩 기능이다.
2. 예제 보며 이해하기
기존의 코드는 각각의 캐릭터(질럿/마린/저글링)들이 상대편 캐릭터를 공격하게 되면,
캐릭터별로 다른 형태의 메서드를 사용하여 코드가 길었다. (ex: 질럿 공격시-attackZealot 메서드 사용)
// 마린이 질럿을 공격합니다.
public void attackZealot(Zealot z) {
System.out.println("[" + this.name + "]이 [" + z.getName() + "]을 공격합니다.");
z.beAttacked(this.power);
}
// 마린이 저글링을 공격합니다.
public void attackZergling(Zergling z) {
System.out.println("[" + this.name + "]이 [" + z.getName() + "]을 공격합니다.");
z.beAttacked(this.power);
}
하지만, 아래와 같이 상위 클래스인 Unit에 attack메서드를 생성한 뒤로는,
캐릭터마다 별도의 메서드를 생성해줄 필요가 없게 되었다.
// 마린이 질럿을 공격합니다.
public void attack(Zealot z) {
System.out.println("[" + this.name + "]이 [" + z.getName() + "]을 공격합니다.");
z.beAttacked(this.power);
}
// 마린이 저글링을 공격합니다.
public void attack(Zergling z) {
System.out.println("[" + this.name + "]이 [" + z.getName() + "]을 공격합니다.");
z.beAttacked(this.power);
}
package basic.ch16;
public class Profile {
public static void main(String[] args) {
Profile p1=new Profile("엄송현",20);
p1.print();
p1.print("헬로키티");
p1.print(0);
p1.print("지나가는 사람",30);
}
private String name;
private String country;
private int temperture;
public Profile(String name, int temperture) {
this.name=name;
this.temperture=temperture;
}
public void print() {
System.out.println("내 이름은 "+this.name+"입니다.");
System.out.println("오늘의 날씨는 "+this.temperture+"도 입니다.");
}
public void print (String name) {
System.out.println("내 이름은 "+name+"입니다.");
}
public void print (int temperture) {
System.out.println("오늘의 날씨는 "+temperture+"도 입니다.");
}
public void print (String name, int temperture) {
System.out.println("내 이름은 "+name+"이고, 오늘의 날씨는 "+temperture+"입니다.");
}
}
728x90
반응형
'Java > 기본 개념 및 클래스' 카테고리의 다른 글
[Java] 39. 포함 관계 (0) | 2024.04.23 |
---|---|
[Java] 38. 상속 관계와 메서드 오버라이딩 (0) | 2024.04.23 |
[Java] 36. 배열 활용: 랜덤 숫자 생성기 (0) | 2024.04.22 |
[Java] 35. 배열 활용: 전화번호부 만들기 (0) | 2024.04.22 |
[Java] 34. 배열 활용 : 도서 관리 프로그램 만들기 (0) | 2024.04.22 |