ITHACK
~ みんなのIT部門 ~
【PHP/演習問題】クラスの継承[1]

【PHP/演習問題】クラスの継承[1]

問題

次の実行結果になるプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 下記表の3つのクラスを作成する
  • 実行結果になるように各クラスのインスタンスを使う
クラス 英記 継承元 フィールド メソッド
乗り物クラス Vehicle なし $distance(移動距離)
※ 初期値は0
move()
→ "移動します。"を出力し、$distanceの値を20加算する。
display_distance()
→ $distanceの値を出力
車クラス Car Vehicle なし run()
→ "走行します。"を出力し、$distanceの値を50加算する。
飛行機クラス Airplane Vehicle なし fly()
→ "飛行します。"を出力し、$distanceの値を50加算する。
===== 乗り物クラスのインスタンス =====
移動します。
移動距離 : 20km
=====  車クラスのインスタンス  =====
走行します。
走行します。
移動距離 : 100km
===== 飛行機クラスのインスタンス =====
飛行します。
飛行します。
飛行します。
移動距離 : 2400km

解答例

<?php

class Vehicle {
    
    public $distance = 0;
    
    public function move() {
        echo "移動します。\n";
        $this->distance += 20;
    }
    
    public function display_distance() {
        echo '移動距離 : '.$this->distance."km\n";
    }
    
}

class Car extends Vehicle {
    
    public function run() {
        echo "走行します。\n";
        $this->distance += 50;
    }
    
}

class Airplane extends Vehicle {
    
    public function fly() {
        echo "飛行します。\n";
        $this->distance += 800;
    }
    
}

echo "===== 乗り物クラスのインスタンス =====\n";
$vehicle = new Vehicle();
$vehicle->move();
$vehicle->display_distance();

echo "=====  車クラスのインスタンス  =====\n";
$car = new Car();
$car->run();
$car->run();
$car->display_distance();

echo "===== 飛行機クラスのインスタンス =====\n";
$airplane = new Airplane();
$airplane->fly();
$airplane->fly();
$airplane->fly();
$airplane->display_distance();

?>