Heim > Artikel > Backend-Entwicklung > Analysieren Sie die drei Hauptmerkmale der objektorientierten PHP-Methode
class BenHang extends Card{ /*构造函数与及构造的继承*/ function __construct($cardno,$pwd, $name,$money){ parent::__construct($cardno,$pwd, $name,$money); } function take($money){ echo "本行取款{$money}没有手续费·····<br>"; }function zhuan($money){ echo "本行转账{$money}·····<br>"; } }$benhang=new BenHang(123,344,444,444);$benhang->check();$benhang->take(234);$benhang->zhuan(4555);/*其他银行卡的类*/class Qita extends Card{function __construct($cardno,$pwd, $name,$money){ parent::__construct($cardno,$pwd, $name,$money); } function take($money){ echo "非本行取款{$money}有手续费2元·····<br>"; } }$qita=new Qita(123,344,444,444);$qita->check();$qita->take(99);
🎜> 1. Wie implementiert man die Vererbung?
Verwenden Sie das Schlüsselwort „extends“ für die Unterklasse, damit die Unterklasse die übergeordnete Klasse erben kann.
Klasse Student verlängert Person{}
2. Was ist bei der Durchführung einer Vererbung zu beachten?
① Unterklassen können nur nicht private Eigenschaften der übergeordneten Klasse erben.
②Nachdem eine Unterklasse eine übergeordnete Klasse geerbt hat, entspricht dies dem Kopieren der Eigenschaften und Methoden der übergeordneten Klasse in die Unterklasse, die direkt mit $this aufgerufen werden kann.③ PHP kann nur eine einzelne Vererbung unterstützen und unterstützt nicht die Vererbung mehrerer Klassen durch eine Klasse. Aber eine Klasse führt eine mehrstufige Vererbung durch; Die Klasse hat sowohl Chengnian-Klassen- als auch Personenklasseneigenschaften und -methoden von
3. Methodenüberschreibung (Methodenumschreibung)
Bedingung ① Unterklasse Von der übergeordneten Klasse erben.
Bedingung ② Die Unterklasse überschreibt die vorhandene Methode der übergeordneten Klasse.
Das Erfüllen der beiden oben genannten Bedingungen wird als Methodenabdeckung bezeichnet. Wenn eine Unterklasse nach dem Überschreiben eine Methode aufruft, wird die eigene Methode der Unterklasse aufgerufen.
Ebenso können Unterklassen zusätzlich zu Methodenüberschreibungen auch Attribute mit demselben Namen wie die übergeordnete Klasse für Attributüberschreibungen haben.
4. Wenn die Unterklasse die Methode der übergeordneten Klasse überschreibt, wie ruft man dann die Methode der übergeordneten Klasse mit demselben Namen in der Unterklasse auf?partent::method name();
Wenn daher eine Unterklasse eine übergeordnete Klasse erbt, muss sie The sein Der erste Schritt bei der Konstruktion besteht darin, den Konstruktor der übergeordneten Klasse zum Kopieren aufzurufen.
function __construct($name,$sex,$school){
parent::__construct($name,$sex);
$this->school = $school;
}
实例一枚:
class Person{protected $name;public $sex; function __construct($name,$sex){ //声明构造函数 $this->name = $name; $this->sex = $sex; } function say(){ echo "我叫{$this->name},我是{$this->sex}生!<br>"; } } class Student extends Person{ //子类继承父类public $school; function __construct($name,$sex,$school){ //子类的构造函数 parent::__construct($name,$sex); //调用父类构造进行复制$this->school = $school; } function program(){ echo "PHP真好玩!我爱PHP!PHP是世界上最好用的编程语言!<br>"; } function say(){ parent::say(); //重写父类的同名方法echo "我是{$this->school}的"; } } $zhangsan = new Student("张三","男","起航"); $zhangsan->say(); $zhangsan->program();
二、封装
class Person{public $name;public $age;public $sex; function __construct($name, $age,$sex){ $this->name=$name; $this->setAge($age); $this->setSex($sex); } function setAge($age){if($age>=0&&$age<=120){return $this->age=$age; }else{ die("年龄输入有误!!!"); } } function setSex($sex){if($sex=="女"||$sex=="男"){return $this->sex=$sex; }else{ die("性别输入有误!!!"); } } function say(){ echo "我的名字叫{$this->name},我的年龄{$this->age},我的性别是{$this->sex}<br>"; } }class Work extends Person{private $position; function __construct($name, $age,$sex,$position){ parent::__construct($name, $age,$sex); $this->job=$job; $this->setPosition($position); } function setPosition($position){ $arr=['总监','董事长','程序员','清洁工'];if(in_array($position, $arr)){return $this->position=$position; }else{ die("不存在该职位"); } } function __set($key,$value){if($key=="age"){return parent::setAge($value); } elseif($key=="sex"){return parent::setSex($value); } elseif($key=="position"){return $this->setPosition($value); }return $this->$key=$value; } function say(){ parent::say(); echo "我的职位是{$this->position}"; } } $zhangsan=new Work("张三",22,"男","总监"); $zhangsan->setSex("女"); $zhangsan->setAge(30);// $zhangsan->setPosition("董事长");$zhangsan->position="董事长"; $zhangsan->name="lisi";$zhangsan->say();
/*墨盒接口 * 纸张接口*/ interface InkBox{ function color(); }interface Paper{ function sizes(); }class Computer{function fangfa(InkBox $a,Paper $b){ //父类引用echo "即将开始打印····<br>"; $a->color();$b->sizes();echo "打印结束···<br>"; } }class Color implements InkBox{function color(){echo "正在装载彩色墨盒<br>";echo "实现彩色墨盒<br>"; } }class White implements InkBox{function color(){echo "正在装载黑白墨盒<br>"; echo "实现黑白墨盒<br>"; } }class A4 implements Paper{function sizes(){echo "正在加载A4纸张<br>";echo "实现A4纸张<br>"; } }class A5 implements Paper{function sizes(){echo "实现A5纸张<br>"; } }$com=new Computer();//创建对象$com->fangfa(new Color(),new A4());//子类对象
Das obige ist der detaillierte Inhalt vonAnalysieren Sie die drei Hauptmerkmale der objektorientierten PHP-Methode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!