Car.java
package kr.or.kihd.overriding2;
public class Car {
int speed;
public Car() {
}
public Car(int speed) {
this.speed = speed;
}
//메서드 앞에 final이 붙으면 상속이 되지 않는다. 자손에게 오버라이딩을 할수 없다.
//메서드 앞에 final이오면 마지막 메서드라고 생각하자.
public final void speedUp() {
this.speed += 10;
System.out.println("차가 "+ this.speed + "속도로 달립니다.");
}
public void speedDown() {
this.speed -= 10;
System.out.println("차가 "+ this.speed + "속도로 달립니다.");
}
public void stop() {
System.out.println("차가 멈춥니다.");
}
}
SportCar.java
package kr.or.kihd.overriding2;
public class SportCar extends Car{
public SportCar() {
}
public SportCar(int speed) {
this.speed = speed;
}
@Override
public void stop() {
System.out.println("스포츠 차가 멈춥니다.");
}
}
CarTest.java
package kr.or.kihd.overriding2;
public class CarTest {
public static void main(String[] args) {
Car car = new Car(80);
car.speedUp();
car.speedDown();
car.stop();
SportCar sportCar = new SportCar(150);
sportCar.speedUp(); //조상클래스의 speedUp() 호출가능
sportCar.speedDown(); //조상클래스의 speedDown() 호출가능
sportCar.stop(); //자손클래스의 stop() 호출
}
}