package ch07;
public class Ch0706
{
public static void main(String[] args)
{
// Car car = new Car(); -> X
Car car = new RacingCar(); //하위클래스를 통한 생성가능. 왜 abstract를 통해서
car.SpeedUp();
car.print();
//car.sayhello(); -> X //상위클래스에 있는 abstract만 가능.
}
}
***** Car.java *****
package ch07;
public abstract class Car
{
// 추상클래스 : 추상메서드가 하나라도 존재하념 그것이 추상클래스이다.
// 추상클래스를 두게되었을 경우 추상클래스를 계승받는 하위클래스에서
// 선언한 추상메서드를 전부 구현해주어야한다.
// 추상메서드 : 함수의 선언만 존재하되 실체는 없는 메서드.
// 형식>public abstract 반환형 멤버변수(...);
//추상클래스는 멤버변수, 멤버함수를 정상적인 클래스처럼 가질수 있지만,
//중요한것은 직접적인 개체생성이 불가능하다.
public int speed = 0;
public abstract void SpeedUp(); //class도 바꿔줘야함.
//인터페이스랑 차이점 : 추상클래스는 멤버변수를 가질수 있다.
public void print()
{
System.out.println("현재속도 : "+speed);
}
}
***** Taxi.java ****
package ch07;
public class Taxi extends Car
{
public void SpeedUp()
{
// TODO 자동 생성된 메소드 스텁
speed+=30;
}
}
**** Truck.java *****
package ch07;
public class Truck extends Car
{
public void SpeedUp()
{
// TODO 자동 생성된 메소드 스텁
speed+=10;
}
}
**** RacingCar.java *****
package ch07;
public class RacingCar extends Car
{
public void SpeedUp()
{
// TODO 자동 생성된 메소드 스텁
speed+=50;
}
public void sayHello()
{
System.out.println("sayHello()");
}
}