當前位置:編程學習大全網 - 源碼下載 - java編程 類的繼承及多態

java編程 類的繼承及多態

***六個類:Vehicle.java(車類), Car.java(轎車類), Bus.java(公***汽車類), Engine.java(發動機), VehicleFactory.java(汽車工廠) 和 VehicleTest.java(測試類),具體代碼分別如下:

***************************************************************

abstract class Vehicle {

Engine engine;

double speed;

double mileage;

public Vehicle() {

}

public Vehicle(Engine engine) {

this.engine = engine;

}

public Vehicle(Engine engine, double mileage) {

this.engine = engine;

this.mileage = mileage;

}

public Vehicle(Engine engine, double speed, double mileage) {

this.engine = engine;

this.speed = speed;

this.mileage = mileage;

}

public Engine getEngine() {

return engine;

}

public void setEngine(Engine engine) {

this.engine = engine;

}

public double getSpeed() {

return speed;

}

public void setSpeed(double speed) {

this.speed = speed;

}

public double getMileage() {

return mileage;

}

public void setMileage(double mileage) {

this.mileage = mileage;

}

public double drive() {

this.setMileage(speed * (Math.round(Math.random() * 6)) + mileage);

return mileage;

}

public abstract double calGC();

public String toString() {

return "Type: " + this.getClass().getName() + ", Horsepower: "

+ engine.horsepower + ", Speed: " + speed + ", Mileage: "

+ mileage + ", Gas consumed: " + calGC();

}

}

***************************************************************

public class Car extends Vehicle {

public Car() {

}

public Car(Engine engine) {

this.engine = engine;

}

public Car(Engine engine, double mileage) {

this.engine = engine;

this.mileage = mileage;

}

public Car(Engine engine, double speed, double mileage) {

this.engine = engine;

this.speed = speed;

this.mileage = mileage;

}

public double calGC() {

return mileage * 2;

}

}

***************************************************************

public class Bus extends Vehicle {

public Bus() {

}

public Bus(Engine engine) {

this.engine = engine;

}

public Bus(Engine engine, double mileage) {

this.engine = engine;

this.mileage = mileage;

}

public Bus(Engine engine, double speed, double mileage) {

this.engine = engine;

this.speed = speed;

this.mileage = mileage;

}

public double calGC() {

return mileage * 3 + 20;

}

}

***************************************************************

public class Engine {

double horsepower;

public Engine() {

this.horsepower = 1;

}

public Engine(double horsepower) {

this.horsepower = horsepower;

}

public double getHorsepower() {

return horsepower;

}

public void setHorsepower(double horsepower) {

this.horsepower = horsepower;

}

}

***************************************************************

public class VehicleFactory {

public static Vehicle makeVehicle(Engine e) {

if ((1 <= e.getHorsepower()) && e.getHorsepower() <= 50) {

return new Car(e, 0);

} else if ((50 < e.getHorsepower()) && e.getHorsepower() <= 100) {

return new Bus(e, 0);

}

return null;

}

}

***************************************************************

public class VehicleTest {

public static void main(String[] args) {

// 新建壹輛馬力28, 速度50的車

Engine e1 = new Engine(28);

Vehicle v1 = VehicleFactory.makeVehicle(e1);

v1.setSpeed(50);

v1.drive();

v1.drive();

System.out.println("第壹輛車:");

System.out.println(v1);

// 新建壹輛馬力88, 速度88的車

Engine e2 = new Engine(88);

Vehicle v2 = VehicleFactory.makeVehicle(e2);

v2.setSpeed(88);

v2.drive();

v2.drive();

System.out.println("第二輛車:");

System.out.println(v2);

}

}

***************************************************************

運行結果如下:

第壹輛車:

Type: Car, Horsepower: 28.0, Speed: 50.0, Mileage: 200.0, Gas consumed: 400.0

第二輛車:

Type: Bus, Horsepower: 88.0, Speed: 88.0, Mileage: 616.0, Gas consumed: 1868.0

***************************************************************

  • 上一篇:汪子祺人物介紹
  • 下一篇:關於學習FPGA的問題(懸賞解惑)
  • copyright 2024編程學習大全網