오버로딩(Overloading) : 같은 이름의 메소드를 여러개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 사용한다.
구분
오버로딩
오버라이딩
메소드이름
동일
동일
매개변수 타입
다름
동일
리턴 타입
상관없음
동일
public class Driver {
private String license_num;
public Driver(String license_num) {
this.license_num = license_num;
}
public String getLicense_num() {
return this.license_num;
}
public void drive(Vehicle car){
System.out.println("운전사["+this.license_num+"] : "+car.getClass().getSimpleName());
car.run();
}
public void drive(Taxi taxi) {
System.out.println("운전사["+this.license_num+"] : Taxi를 운전합니다. ");
if(taxi.owner == "public"|| this.license_num==taxi.owner)taxi.run();
else System.out.println("=====> 이 택시는 허가된 사람만 운전할 수 있습니다.");
}
}
Main
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Bus b =new Bus();
Taxi t = new Taxi();
Subway s = new Subway();
Taxi tt = new Taxi("2015-0001");
Driver d = new Driver("2015-0001");
Driver dd = new Driver("2015-0003");
d.drive(b);
d.drive(s);
d.drive(t);
d.drive(tt);
dd.drive(tt);
}
}
운전사[2015-0001] : Bus
====> Bus가 달립니다.
운전사[2015-0001] : Subway
==> Subway가 달립니다.
운전사[2015-0001] : Taxi를 운전합니다.
====> Taxi [ public] 가 달립니다.
운전사[2015-0001] : Taxi를 운전합니다.
====> Taxi [ 2015-0001] 가 달립니다.
운전사[2015-0003] : Taxi를 운전합니다.
=====> 이 택시는 허가된 사람만 운전할 수 있습니다.