Java
[Java] 37. 메서드 오버로딩
Song hyun
2024. 4. 23. 09:13
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
반응형