0

私はPHPプロジェクトに取り組んでおり、基本的なことについて助けが必要です。車両クラスがあります。車両クラス内には、fuel_capacityと呼ばれる変数があります。ご想像のとおり、燃料容量は車両ごとに異なります。たとえば、fuel_capacityは車とトラックの間で変化します。車両クラスを拡張するCarクラスとTruckクラスがあります。

車の建設時に、$fuel_capacityに値を割り当てたいと思います。これを行うと、$fuel_capacity publicを宣言しない限り、車両内の関数から$fuel_capacityにアクセスできません。問題は、Carクラスで$fuel_capacity publicを宣言すると、Truckクラスの$fuel_capacityと競合するのではないかと心配していることです。これは正しいです?もしそうなら、どうすれば$fuel_capacityを親と共有できますか?

また、Carクラスでコンストラクタークラスを使用したいので、これはVehicleクラスコンストラクターをオーバーライドします。とにかく、たとえば、Carクラス内で$fuel_capacityなどの値を割り当ててから、Vehicleクラスのコンストラクター内でその値を使用するように呼び出すことができますか?

最後に、別のクラスから拡張するクラスのインターフェイスを設定する方法はありますか?

PHPで通常の関数とクラスメソッドを使用することの違いは何ですか?を含む多くのページを見てきました。、phpでの継承の理解、PHPの継承の理解、およびPHPでの通常の関数とクラスメソッドの使用の違いは何ですか?。これらはすべて素晴らしい紹介でしたが、これらの質問には対応していません。ありがとう :-)

4

1 に答える 1

3

OOPがどのように機能し、PHPでどのように実装されているかを本当に理解する必要があります。 http://php.net/oopが役立つはずです。

これを行う1つの方法があります。もちろん、コンストラクターで燃料容量を設定することもできます。誰かにオブジェクトを作成させたくないのでVehicle、クラスになることをお勧めします。abstractVehicle

もちろん継承する場合は、Car/Trunk保護されていると宣言されているため、クラスから変数にアクセスできます。

abstract class Vehicle {
    public function setFuelCapacity($capacity) {
        $this->fuel_capacity = $capacity;
    }

    protected $fuel_capacity;
}

class Car extends Vehicle {
}

class Truck extends Vehicle {
}

お役に立てば幸いです。

于 2012-05-17T03:50:05.620 に答える