package test;

class Zealot{
	int hp = 100;
	int attack = 10;
}

class Dragoon {
	int hp = 100;
	int attack = 20;
}

public class Test {
	
	// 질럿 -> 드라군
	static void attack(Zealot z, Dragoon d) {
		d.hp = d.hp - z.attack;
		System.out.println("드라군이 공격당했습니다");
	}
	
	public static void main(String[] args) {
		Zealot z1 = new Zealot();
		Dragoon d1 = new Dragoon();
		
		attack(z1, d1);
	}
}
public class Test {
	
	// 질럿 -> 드라군
	static void attack(Zealot z, Dragoon d) {
		d.hp = d.hp - z.attack;
		System.out.println("드라군이 공격당했습니다");
	}
	
	**// 드라군 -> 질럿
	static void attack2(Dragoon d, Zealot z) {
		z.hp = z.hp - d.attack;
		System.out.println("질럿이 공격당했습니다");
	}**
	
	public static void main(String[] args) {
		Zealot z1 = new Zealot();
		Dragoon d1 = new Dragoon();
		
		attack(z1, d1);
	}
}

이런식으로 함수의 이름이 계속해서 바뀐다면?

사용자 입장에서는 모든 함수의 이름을 알고 있어야하는 불편이 따른다

→ 함수의 이름은 통일하고, 안에 들어오는 매개변수의 타입만 다르게 하는것

⇒ 오버로딩

System.out.println("질럿이 공격당했습니다");
// System : 클래스
// println : 여기에도 다양한 타입이 들어올 수 있음 (오버로딩 되어있음)