これは、人間が子供を産むのと同じで(なぜ子供を産まなければならないのですか?老化を防ぐためだけですか?わかりません)、あなたは自分自身の遺伝子の一部を取り出し、自分自身の遺伝子を取り除きます。妻の遺伝子の一部は、新しい個体に再生されます。この新しい人格には、必ず二人の特徴が含まれます。これは、生物学における遺伝(遺伝)の説明です。プログラミングの世界では、継承は継承です。
まず、継承の生きた原則を理解した後、PHP クラスの継承がそれほど神秘的ではなくなるかどうかを見ていきたいと思います。たぶん、私たち自身があまりにも複雑なので、そもそも神秘的ではないのかもしれません。相続するためには「根」が必要ですが、この「根」は、将来息子や娘が生まれた場合に、何かの「物(性質や方法)」を手に入れることを想像するかもしれません。あなたは、あなたの「子孫」があなた(ルーツ)のすべての特性を継承し続けるようにします。これを文法を使って PHP のオブジェクト指向言語でどのように表現するかを説明しましょう (人間のように直接的にはできません。結婚すると、しばらくすると子孫が生まれます)
1. 「ルート」クラス (親) を生成します。 class) または基本クラス)
構文: class Father{
}
1.「子孫」(サブクラス) を生成する
構文: class Son extends Father{
}
説明: 親クラス通常のクラスの子孫が必要な場合は、通常のクラスの後に extends キーワードを追加するだけでよく、サブクラスには親クラスのすべての属性とメソッドのみが含まれます。実はとても簡単なことなのです。
ここで実際的なことをしてみましょう。結局のところ、PHP クラスの継承で親クラスとサブクラスを定義することは、特定のタスクを完了することです。ここでのタスクは比較的単調です。人間を例に挙げると、人間には名前 (属性) があり、睡眠と食事 (メソッド) が必要です。この基本的なタスクを使用して、このセクションの知識を完成させましょう。
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> ?php </span></span></li><li><span>class father{ </span></li><li class="alt"><span>protected $name; </span></li><li><span>function __construct($name){ </span></li><li class="alt"><span>$this-</span><span class="tag">></span><span class="attribute">name</span><span>=$name; </span></span></li> <li><span>} </span></li> <li class="alt"><span>function __destruct(){ </span></li> <li> <span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}也是要死的</span><span class="tag"><</span><span> </span><span class="tag-name">br</span><span class="tag">/></span><span class="tag"><</span><span> /p</span><span class="tag">></span><span>"; </span> </li> <li class="alt"><span>} </span></li> <li><span>//这个就是所谓的构造函数,用来初始化 </span></li> <li class="alt"><span>function go_to_sleeping(){ </span></li> <li> <span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}想睡觉.</span><span class="tag"><</span><span> /p</span><span class="tag">></span><span>"; </span> </li> <li class="alt"><span>} </span></li> <li><span>function eat(){ </span></li> <li class="alt"> <span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}想吃饭.</span><span class="tag"><</span><span> /p</span><span class="tag">></span><span>"; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li><span>class son extends father{ </span></li> <li class="alt"><span>function playing(){ </span></li> <li><span>//小孩子会很调皮的,当然他也是要吃要睡的生物 </span></li> <li class="alt"> <span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}正在捣蛋...</span><span class="tag"><</span><span> /p</span><span class="tag">></span><span>"; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li> <span>$</span><span class="attribute">your_father</span><span>=</span><span class="attribute-value">new</span><span> father("老爸"); </span> </li> <li class="alt"> <span>$your_father-</span><span class="tag">></span><span>go_to_sleeping(); </span> </li> <li> <span>$your_father-</span><span class="tag">></span><span>eat(); </span> </li> <li class="alt"> <span>$</span><span class="attribute">my_son</span><span>=</span><span class="attribute-value">new</span><span> son('宝贝'); </span> </li> <li> <span>$my_son-</span><span class="tag">></span><span>go_to_sleeping(); </span> </li> <li class="alt"> <span>$my_son-</span><span class="tag">></span><span>eat(); </span> </li> <li> <span>$my_son-</span><span class="tag">></span><span>playing(); </span> </li> <li class="alt"> <span class="tag">?></span><span> </span> </li> <li> <span class="tag"><</span><span> ?php </span></li><li class="alt"><span>class father{ </span></li><li><span>protected $name; </span></li><li class="alt"><span>function __construct($name){ </span></li><li><span>$this-</span><span class="tag">></span><span class="attribute">name</span><span>=$name; </span> </li> <li class="alt"><span>} </span></li> <li><span>function __destruct(){ </span></li> <li class="alt"> <span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}也是要死的</span><span class="tag"><</span><span> </span><span class="tag-name">br</span><span class="tag">/></span><span class="tag"><</span><span> /p</span><span class="tag">></span><span>"; </span> </li> <li><span>} </span></li> <li class="alt"><span>//这个就是所谓的构造函数,用来初始化 </span></li> <li><span>function go_to_sleeping(){ </span></li> <li class="alt"> <span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}想睡觉.</span><span class="tag"><</span><span> /p</span><span class="tag">></span><span>"; </span> </li> <li><span>} </span></li> <li class="alt"><span>function eat(){ </span></li> <li> <span>echo "</span><span class="tag"><</span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}想吃饭.</span><span class="tag"></</span><span class="tag-name">p</span><span class="tag">></span><span>"; </span> </li> <li class="alt"><span>} </span></li> <li><span>} </span></li> <li class="alt"><span>class son extends father{ </span></li> <li><span>function playing(){ </span></li> <li class="alt"><span>//小孩子会很调皮的,当然他也是要吃要睡的生物 </span></li> <li> <span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}正在捣蛋...</span><span class="tag"><</span><span> /p</span><span class="tag">></span><span>"; </span> </li> <li class="alt"><span>} </span></li> <li><span>} </span></li> <li class="alt"> <span>$</span><span class="attribute">your_father</span><span>=</span><span class="attribute-value">new</span><span> father("老爸"); </span> </li> <li> <span>$your_father-</span><span class="tag">></span><span>go_to_sleeping(); </span> </li> <li class="alt"> <span>$your_father-</span><span class="tag">></span><span>eat(); </span> </li> <li> <span>$</span><span class="attribute">my_son</span><span>=</span><span class="attribute-value">new</span><span> son('宝贝'); </span> </li> <li class="alt"> <span>$my_son-</span><span class="tag">></span><span>go_to_sleeping(); </span> </li> <li> <span>$my_son-</span><span class="tag">></span><span>eat(); </span> </li> <li class="alt"> <span>$my_son-</span><span class="tag">></span><span>playing(); </span> </li> <li> <span class="tag">?></span><span> </span> </li> </ol>
分析: 継承を使用する最初の例では、PHP コンストラクターで説明したコンストラクターと、PHP クラスのカプセル化のキーワードを使用します。正午には寝たくなかったので、これ以上言いたくないのですが、この小さなプログラムについて話しましょう。
クラスの父では、人の名前、その人が何を食べ、何を寝る必要があるかなどの一般的な特徴を定義し、そのサブクラス (子孫) で個人化されたメソッド (結局のところ、人) を定義します。それらの間には違いがあります。コンストラクターを使用して名前を初期化し、もちろんデストラクターを使用してオブジェクトを「破棄」します。ただし、サブクラスにはコンストラクターとデストラクターがないため、サブクラスは親の All メソッドを継承します。それ以外の場合は、メソッドが継承されます。 $my_son->go_to_sleeping(); を次のように呼び出すことはできますか? これは PHP クラスの継承です。