이 문서의 예에서는 PHP가 부모를 구현하여 생성자 메서드와 부모 클래스의 재정의된 메서드를 호출하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
덮어쓰기: 재설계되었습니다.
하위 클래스에서 생성자를 정의할 때 상위 클래스의 생성자에 매개변수를 전달해야 합니다. 그렇지 않으면 불완전하게 구성된 객체를 얻을 수 있습니다.
부모 클래스의 메서드를 호출하려면 먼저 클래스 자체를 참조하는 방법을 찾아야 합니다. PHP는 이를 위해 부모 키워드를 제공합니다.
부모는 부모 클래스의 생성자를 호출합니다.
<?php header('Content-type:text/html;charset=utf-8'); // 从这篇开始,类名首字母一律大写,规范写法 class ShopProduct{ // 声明类 public $title; // 声明 属性 public $producerMainName; public $producerFirstName; public $price; function construct($title,$firstName,$mainName,$price){ $this -> title = $title; // 给属性 title 赋传进来的值 $this -> producerFirstName= $firstName; $this -> producerMainName = $mainName; $this -> price= $price; } function getProducer(){ // 声明方法 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; } } // 定义类 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; } } ?>
각 하위 클래스는 이전에 호출됩니다. 자체 속성 설정 상위 클래스의 생성자. 이제 기본 클래스(상위 클래스)는 자신의 데이터만 알고 있으므로 하위 클래스에 대한 정보를 상위 클래스에 알리지 않도록 해야 합니다. 이는 경험상 특정 하위 클래스의 정보가 " "confidential" 이므로 부모 클래스는 자신의 정보를 알고 있으며 다른 서브클래스는 이를 상속받을 수 있으므로 서브클래스의 정보는 기밀로 유지되지 않습니다.
parent는 상위 클래스의 재정의된 메서드를 호출합니다.
parent 키워드는 상위 클래스를 재정의하는 모든 메서드에서 사용할 수 있습니다. 부모 클래스의 메서드를 재정의할 때 부모 클래스의 함수를 삭제하는 것이 아니라 확장하고 싶습니다. 이는 현재 객체에서 부모 클래스의 메서드를 호출하여 달성할 수 있습니다.위 코드를 보면 두 하위 클래스의 getSummaryLine() 메서드에서 많은 코드가 반복되는 것을 볼 수 있습니다. 반복 개발 대신 ShopProduct 클래스에 이미 존재하는 함수를 사용해야 합니다.
// 父类:ShopProduct function getSummaryLine(){ $base = "{$this->title}( {$this->producerMainName},"; $base .= "{$this->producerFirstName} )"; return $base; } // 子类:CdProduct function getSummaryLine(){ $base = parent::getSummaryLine(); $base .= ":playing time - {$this->playLength} )"; return $base; } // 子类:BookProduct function getSummaryLine(){ $base = parent::getSummaryLine(); $base .= ":page cont - {$this->numPages} )"; return $base; }현재 위치 상위 클래스 ShopProduct는 getSummaryLine() 메서드에 대한 "핵심" 기능을 완성한 다음 하위 클래스에서 상위 클래스 메서드를 호출하고 요약에 더 많은 데이터를 추가합니다.
string , 방법 확장이 실현됩니다.
위 내용은 PHP가 상위 클래스 인스턴스를 호출하는 상위를 구현하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!