簡體   English   中英

讓孩子上課叫家長上課

[英]Having child class call parent class

有時我發現自己在各種不同的相關事物上執行相似的任務。 例如,我可能有“書”,“電影”和“歌曲”,我可能有任務“ addNote”,該任務從客戶端獲取注釋文本,將其添加到數據庫中,並將其與適當的父記錄相關聯,並將一些數據返回給客戶端。 我已經實現了它,如下所示,盡管它可以正常工作,但這似乎是錯誤的。 有沒有更好的方法可以做到這一點? 謝謝

class parentClass
{
    protected function someTask($table)
    {
        //do the task which is common to child1/2/3Class using $table
    }
}

class child1Class extends parentClass
{
    public function someTask($dummy=NULL){parent::someTask('class1_table');}
}
class child2Class extends parentClass
{
    public function someTask($dummy=NULL){parent::someTask('class2_table');}
}
class child3Class extends parentClass
{
    public function someTask($dummy=NULL){parent::someTask('class3_table');}
}

$ajax=new child1Class(); //specific childClass based on MVC
$ajax->someTask();

您擁有的方式是正確的。 您唯一的其他選擇是將父方法設為“ public”

class parentClass
{
    public function someTask($table)
    {
        echo "hello " . $table;
    }
}

class child1Class extends parentClass
{
  // no needed method here
}
 class child2Class extends parentClass
{
  // no needed method here
}

$obj1 = new child1Class();
$obj1->someTask('class1_table');
$obj2 = new child1Class();
$obj2->someTask('class2_table');
$obj3 = new child2Class();
$obj3->someTask('class3_table');

result with obj1: "hello class1_table"
result with obj2: "hello class2_table"
result with obj3: "hello class3_table"
  • Public使方法可以通過對象直接訪問。
  • 受保護使方法可通過子類訪問
  • 專用使該方法只能通過其自己的類進行訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM