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. Comment mettre en œuvre l'héritage ?
Utilisez le mot-clé extends pour la sous-classe pour permettre à la sous-classe d'hériter de la classe parent
classe ; L'étudiant étend la personne{}
2. Points à noter lors de la mise en œuvre de l'héritage ?
① Les sous-classes ne peuvent hériter que des propriétés non privées de la classe parent.
②Après qu'une sous-classe hérite d'une classe parent, cela équivaut à copier les propriétés et les méthodes de la classe parent dans la sous-classe, qui peut être appelée directement en utilisant $this.③ PHP ne peut prendre en charge qu'un seul héritage et ne prend pas en charge une classe héritant de plusieurs classes. Mais une classe effectue un héritage multi-niveaux ;>
classe Student extends Chengnian{}
//Etudiant la classe a à la fois la classe Chengnian et la classe Person Propriétés et méthodes de
3. Remplacement de méthode (réécriture de méthode)
Condition ① Sous-classe Hériter de la classe parent.
Condition ② La sous-classe remplace la méthode existante de la classe parent.
Le respect des deux conditions ci-dessus est appelé couverture de méthode. Après le remplacement, lorsqu'une sous-classe appelle une méthode, la propre méthode de la sous-classe sera appelée. De même, en plus des remplacements de méthodes, les sous-classes peuvent également avoir des attributs portant le même nom que la classe parent pour les remplacements d'attributs.
4. Si la sous-classe remplace la méthode de la classe parent, comment appeler la méthode de la classe parent du même nom dans la sous-classe ?
parent::method name();
Par conséquent, lorsqu'une sous-classe hérite d'une classe parent, elle doit être The La première étape de la construction consiste à appeler le constructeur de la classe parent pour la copie.
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());//子类对象
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!