🔔 학습 목표
1. 메서드 오버로딩에 대한 개념을 이해하자.
1. 메서드 오버로딩에 대한 개념을 이해하자.
메서드 오버로딩(Overloading)은 같은 이름의 메서드를 여러 개 정의하는 것을 말합니다. 이때 메서드의 시그니처(signature), 즉 메서드 이름과 매개변수의 타입, 개수, 순서가 서로 달라야 합니다. 메서드 오버로딩을 사용하면 같은 기능을 하는 메서드들을 하나의 이름으로 통일할 수 있어 코드의 가독성을 높일 수 있습니다.
package basic.ch16;
/**
* 메서드 오버로딩이란?
* 같은 이름의 메서드를 여러 개
* 정의하는 것을 말한다.
*/
public class Calculator {
// 덧셈 메서드 생성
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
// 문자열 더하는 기능
public String add(String str1, String str2) {
return str1 + str2;
}
// public int number(int sum) {
// for(int i = 0; i <= 10; i+=2) {
// sum = 0 + i;
// }
// return sum;
// }
//
// public int number(int a) {
// for(a = 0; a<= 10; i +=2) {
// sum = 0 +i;
// }
// return sum;
// }
} // end of class
메서드 오버로딩 기법을 활용 - attack 오버로딩
package starcraft.ver02;
public class Marine {
private String name;
private int power;
private int hp;
public Marine(String name) {
this.name = name;
power = 4;
hp = 70;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
// 마린이 질럿을 공격합니다. attackZealot
public void attack(Zealot z) {
System.out.println(this.name + " 이 " + z.getName() + " 을 공격합니다." );
z.beAttacked(this.power);
}
// 마린이 저글링을 공격합니다. attackZergling
public void attack(Zergling z) {
System.out.println(this.name + " 이 " +z.getName() + " 을 공격합니다.");
z.beAttacked(this.power);
}
// 자신이 공격을 당합니다.
public void beAttacked(int power) {
// 방어적 코드
if(hp <= 0) {
System.out.println("[" + this.name + "] 이미 사망하였습니다.");
hp = 0;
return;
}
hp -= power;
}
public void showInfo() {
System.out.println("====상태창====");
System.out.println("이름 : " + this.name);
System.out.println("공격력 : " + this.power);
System.out.println("생명력 : " + this.hp);
}
} // end of class
package starcraft.ver02;
public class Zealot {
private String name;
private int power;
private int hp;
public Zealot(String name) {
this.name = name;
power = 5;
hp = 80;
}
// getter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPower() {
return power;
}
public int getHp() {
return hp;
}
// 질럿이 저글링을 공격합니다.
public void attack(Zergling z) {
System.out.println(this.name + " 이 " + z.getName() + " 을 공격합니다.");
z.beAttacked(this.power);
}
// 질럿이 마린을 공격합니다.
public void attack(Marine m) {
System.out.println(this.name + " 이 " + m.getName() + " 을 공격합니다.");
m.beAttacked(this.power);
}
// 자신이 공격을 당합니다.
public void beAttacked(int power) {
// 방어적 코드
if(hp <= 0) {
System.out.println("[" + this.name + "] 이미 사망하였습니다.");
hp = 0;
return;
}
hp -= power;
}
public void showInfo() {
System.out.println("====상태창====");
System.out.println("이름 : " + this.name);
System.out.println("공격력 : " + this.power);
System.out.println("생명력 : " + this.hp);
}
} // end of class
package starcraft.ver02;
public class Zergling {
private String name;
private int power;
private int hp;
public Zergling(String name) {
this.name = name;
power = 3;
hp = 50;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
// 저글링이 질럿을 공격합니다. attackZealot
public void attack(Zealot z) {
System.out.println(this.name + " 이 " + z.getName() + " 을 공격합니다.");
z.beAttacked(this.power);
}
// 저글링이 마린을 공격합니다. attackMarine
public void attack(Marine m) {
System.out.println(this.name + " 이 " + m.getName() + " 을 공격합니다.");
m.beAttacked(this.power);
}
// 자신이 공격을 당합니다.
public void beAttacked(int power) {
// 방어적 코드
if(hp <= 0) {
System.out.println("[" + this.name + "] 이미 사망하였습니다.");
hp = 0;
return;
}
hp -= power;
}
public void showInfo() {
System.out.println("====상태창====");
System.out.println("이름 : " + this.name);
System.out.println("공격력 : " + this.power);
System.out.println("생명력 : " + this.hp);
}
// get, set - 단축키 Alt + Shift + s
} // end of class
'Java > Java 객체지향 핵심 - 2' 카테고리의 다른 글
Composition(포함관계) - 18 (0) | 2024.04.23 |
---|---|
상속(Inheritance) - 17 (0) | 2024.04.23 |
전화번호관리 프로그램 만들기 - {연습문제} (0) | 2024.04.22 |
배열에 활용(도서관리프로그램) - 15 (0) | 2024.04.22 |
배열에 대해서 알아 보자 - 14 (0) | 2024.04.22 |