abstract 용도..

DevTool/Java 2009. 6. 4. 17:43

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()");
 }
}

Posted by 말없제이
,