Home  >  Article  >  Backend Development  >  PHP implements parent calling the constructor method and overridden method of the parent class, parent is overridden_PHP tutorial

PHP implements parent calling the constructor method and overridden method of the parent class, parent is overridden_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:06:58806browse

php implements parent to call the constructor method and overridden method of the parent class, parent is overridden

The example in this article describes how PHP implements parent to call the constructor method and overridden method of the parent class. Share it with everyone for your reference. The specific analysis is as follows:

Override: Redesigned.

When defining a constructor in a subclass, you need to pass parameters to the constructor of the parent class, otherwise we may get an incompletely constructed object.

To call the method of the parent class, you must first find a way to reference the class itself: handle. PHP provides the parent keyword for this.

parent calls the constructor of the parent class

To reference a method of a class rather than an object, use :: (two colons) instead of ->.

So, parent::__construct() means calling the __construct() method of the parent class.

Modify the code in the previous article "Using Class Inheritance to Solve Code Duplication and Other Problems" so that each class only processes its own data:

Copy code The code is as follows:
header('Content-type:text/html;charset=utf-8');
// Starting from this article, the first letter of the class name must be capitalized, and the writing method is standardized
class ShopProduct{ // Declare class
public $title; // declare attributes
public $producerMainName;
public $producerFirstName;
public $price;
function __construct($title,$firstName,$mainName,$price){
$this -> title = $title; // Assign the passed value to the attribute title
$this -> producerFirstName= $firstName;
$this -> producerMainName = $mainName;
$this -> price= $price;
}
function getProducer(){ //Declaration method
return "{$this -> producerFirstName }"."{$this -> producerMainName}";
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
return $base;
}
}
class CdProduct extends ShopProduct {
public $playLenth;
function __construct($title,$firstName,$mainName,$price,$playLenth){
parent::__construct($title,$firstName,$mainName,$price);
$this -> playLenth= $playLenth;
}
function getPlayLength(){
return $this -> playLength;
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
$base .= ":playing time - {$this->playLength} )";
return $base;
}
}
// Define class
class BookProduct extends ShopProduct {
public $numPages;
function __construct($title,$firstName,$mainName,$price,$numPages){
parent::__construct($title,$firstName,$mainName,$price);
$this -> numPages= $numPages;
}
function getNumberOfPages(){
return $this -> numPages;
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
$base .= ":page cont - {$this->numPages} )";
return $base;
}
}

?>


Each subclass calls the parent class's constructor before setting its own properties. The base class (parent class) now only knows its own data, and we should try to avoid telling the parent class any information about the subclass. This is a rule of thumb. Think about it if the information of a certain subclass should be "confidential" , as a result, the parent class knows its information, and other subclasses can inherit it, so that the subclass's information is not kept confidential.

parent calls the overridden method of the parent class

The parent keyword can be used in any method that overrides the parent class. When overriding a method of a parent class, we do not want to delete the function of the parent class, but extend it. This can be achieved by calling the method of the parent class in the current object.
Looking at the code above, you can find that a lot of code is repeated in the getSummaryLine() method in the two subclasses. We should make use of the functions that already exist in the ShopProduct class instead of redundant development:

Copy code The code is as follows:
// Parent class: ShopProduct
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
return $base;
}
// Subclass: CdProduct
function getSummaryLine(){
$base = parent::getSummaryLine();
$base .= ":playing time - {$this->playLength} )";
return $base;
}
// Subclass: BookProduct
function getSummaryLine(){
$base = parent::getSummaryLine();
$base .= ":page cont - {$this->numPages} )";
return $base;
}


We have completed the "core" function for the getSummaryLine() method in the parent class ShopProduct, and then simply call the parent class method in the subclass, and then add more data to the summary string, and the method expansion is realized.

I hope this article will be helpful to everyone’s PHP programming design.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/957135.htmlTechArticlephp implements parent to call the parent class's construction method and overridden method, and parent is overridden. This article describes the example of php implementing parent Call the constructor method and overridden method of the parent class. Share it with everyone...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn