2016-10-30 13 views
1

オブジェクトを扱うPHPの問題に取り組んでいますが、これまでは少し問題があります。PHP:オブジェクトの使い方と使い方

要件:メーカー、モデル、年、価格:

  1. プロパティを保護していたクラスの車を定義します。 make、model、year、およびpriceを取り込むコンストラクタメソッドを作成します。パブリックメソッドdisplayObject()を実装して、各オブジェクトインスタンスのプロパティを表示します。

  2. Vehicleクラスを継承し、プライベートプロパティmaxSpeedを含む派生クラスLandVehicleを定義します。この派生クラスのコンストラクタとdisplayObject()メソッドをオーバーライドする必要があります。

  3. Vehicleクラスから継承し、privateプロパティ:boatCapacityも含む別の派生クラスWaterVehicleを定義します。この派生クラスのコンストラクタとdisplayObject()メソッドをオーバーライドする必要があります。

  4. LandVehicleの少なくとも3つのオブジェクトをインスタンス化(作成)し、各オブジェクトインスタンスのプロパティを表示します。

  5. WaterVehicleの少なくとも3つのオブジェクトをインスタンス化(作成)し、各オブジェクトインスタンスのプロパティを表示します。

現時点では私のコード:メーカー、モデル、年、および価格:現時点で

class Vehicle { 

protected int $make; 
protected int $model; 
protected int $year; 
protected int $price; 

function_construct() { 
    $this->make = ""; 
    $this->model = ""; 
    $this->year = ""; 
    $this->price = ""; 
} 

function_construct($make, $model, $year, $price) { 
    $this->make = $make; 
    $this->model = $model; 
    $this->year = $year; 
    $this->price = $price; 
} 

public function displayObject() { 
    return $this->$make . " " . $this->$model . " " . $this->$year . " " . $this->$price; 
} 
} 

class LandVehicle extends Vehicle { 

private int maxSpeed; 
protected int $make; 
protected int $model; 
protected int $year; 
protected int $price; 
} 

class WaterVehicle extends Vehicle { 

private int boatCapacity; 
protected int $make; 
protected int $model; 
protected int $year; 
protected int $price; 
} 

、クラス(車両)は、4つの変数を宣言されています。 displayObject()メソッドがダウンしています(何か問題があった場合を除いて)。私は、Vehicleクラスを継承して新しい派生クラスLandVehicleとWaterVehicleを作成することができました。それらは簡単な部分でした。難しい部分は、派生クラスのコンストラクタとdisplayObject()メソッドをオーバーライドする方法です。それは単純にエコーステートメントか、それ以上のことですか? for、while、またはforeachループを作成する必要がありますか?

答えて

0

あなたはparentキーワードを使用して親のメソッドを呼び出すことができます。

class Vehicle 
{ 
    protected $make; 
    protected $model; 
    protected $year; 
    protected $price; 

    public function __construct($make, $model, $year, $price) 
    { 
    $this->make = $make; 
    $this->model = $model; 
    $this->year = $year; 
    $this->price = $price; 
    } 

    public function displayObject() 
    { 
    return $this->make . " " . $this->model . " " . $this->year . " " . $this->price; 
    } 
} 

class LandVehicle extends Vehicle 
{ 
    protected $maxSpeed; 

    public function __construct($make, $model, $year, $price, $maxSpeed) 
    { 
    parent::__construct($make, $model, $year, $price); 

    $this->maxSpeed = $maxSpeed; 
    } 

    public function displayObject() 
    { 
    return parent::displayObject() . ' ' . $this->maxSpeed; 
    } 
} 

は、水の車のために同じ操作を行います。

関連する問題