Java

메서드 오버로딩

H_u 2024. 4. 23. 16:09
728x90
반응형
SMALL

💡 학습 목표

  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 String add(String str1, String str2, String str3) {

return str1 + str2 + str3;

}

 

 

public static void main(String[] args) {

 

}

}

 

메서드 오버로딩 기법을 활용

package basic.starcraft.ver02;

 

public class Marin {

 

private String name;

private int power;

private int hp;

public Marin(String name) {

this.name = name;

power = 6;

hp = 40;

}

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("이름 : " + this.name);

System.out.println("공격력 : " + this.power);

System.out.println("체력 : " + this.hp);

}

}

package basic.starcraft.ver02;

 

public class Zealot {

 

private String name;

private int power;

private int hp;

private int shiled;

 

public Zealot(String name) {

this.name = name;

power = 16;

hp = 100;

shiled = 60;

}

 

// 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(Marin m) {

System.out.println(this.name + " 이 " + m.getName() + " 을 공격합니다.");

m.beAttacked(this.power);

}

// 자신이 공격을 당합니다.

public void beAttacked(int power) {

// 방어적 코드

if(shiled <= power) {

hp = hp - (power - shiled);

return;

}

else if(hp <= 0) {

System.out.println(" [" + this.name + " ]이미 사망하였습니다.");

hp = 0;

return;

}

shiled -= power;

shiled++;

}

public void showInfo() {

System.out.println("이름 : " + this.name);

System.out.println("공격력 : " + this.power);

System.out.println("체력 : " + this.hp);

System.out.println("쉴드 : " + this.shiled);

}

}

package basic.starcraft.ver02;

 

public class Zergling {

 

private String name;

private int power;

private int hp;

public Zergling(String name) {

this.name = name;

power = 5;

hp = 35;

}

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;

}

 

// 저글링이 마린을 공격합니다. attackMarin

public void attack(Marin m) {

System.out.println(this.name + " 이 " + m.getName() + " 을 공격합니다.");

m.beAttacked(this.power);

}

// 저글링이 질럿을 공격합니다. attackZealot

public void attack(Zealot z) {

System.out.println(this.name + " 이 " + z.getName() + " 을 공격합니다.");

z.beAttacked(this.power);

}

 

// get, set

// 단축키 alt +shift +s

 

// 자신이 공격을 당합니다.

public void beAttacked(int power) {

// 방어적 코드

 

if(hp <= 0) {

System.out.println(" [" + this.name + " ]이미 사망하였습니다.");

hp = 0;

return;

}

hp -= power;

}

public void showInfo() {

System.out.println("이름 : " + this.name);

System.out.println("공격력 : " + this.power);

System.out.println("체력 : " + this.hp);

}

 

}

728x90
반응형
SMALL