2012-05-17 43 views
0

我正在開發一個PHP項目,我需要一些基礎知識。我有一個車輛類。在車輛級別中有一個名爲fuel_capacity的變量。正如您所期望的那樣,車輛之間的燃油容量會發生變化。例如,汽車和卡車之間的fuel_capacity會發生變化。我有一個汽車類和一個卡車類,延長車輛類。PHP變量,類和繼承瞭解基礎知識

關於汽車的建造,我想爲$ fuel_capacity分配一個值。當我這樣做時,除非我公佈$ fuel_capacity,否則我無法從車輛內的功能訪問$ fuel_capacity。問題是如果我在Car類中宣佈$ fuel_capacity public,那麼我擔心它將與Truck類的$ fuel_capacity衝突。它是否正確?如果是這樣,我該如何與父母分享$ fuel_capacity?

另外我想在我的Car類中使用構造函數類,那麼這將覆蓋我的Vehicle類構造函數。無論如何,我可以調用例如在Car類中賦值$ fuel_capacity的值,然後在Vehicle類的構造函數中使用該值?

最後是否有一種方法可以爲從另一個類擴展的類設置接口?

我看過很多頁面,包括What's the difference between using normal functions and class methods in PHP?,Understanding inheritance in php,Understanding PHP InheritanceWhat's the difference between using normal functions and class methods in PHP?。這些都是很好的介紹,但他們沒有解決這些問題。感謝:-)

+0

你讀過http://www.php.net/manual/en/language.oop5.basic.php嗎? –

+0

是@Cory :-)這是因爲我不明白我在問這些問題。 – Brett

+0

您聽起來像您擁有Java背景。我會建議忘記,當你學習PHP。 – Jon

回答

3

您需要真正瞭解OOP如何工作以及如何在PHP中實現。 http://php.net/oop應該可以提供幫助。

以下是一種方法。您當然可以在構造函數中設置燃料容量。我建議Vehicle是一個abstract類,因爲你不想讓別人創建一個Vehicle對象。

如果您繼承,當然您可以從Car/Trunk類訪問變量,因爲它聲明瞭protected。

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

    protected $fuel_capacity; 
} 

class Car extends Vehicle { 
} 

class Truck extends Vehicle { 
} 

希望有所幫助。

+0

這是一個很大的幫助。謝謝。 – Brett

+0

@Brett很高興知道這對你有所幫助 – g13n