継承 は、3 つの主要なオブジェクト指向メカニズムの 1 つです。 C++、JAVA、PHPに存在します。以下はPHPでの使い方の紹介です。
通常、他の既存のクラスと同じ変数と関数を持つクラスが必要です。実際、すべてのプロジェクトで使用される共通のクラスを定義し、各特定のプロジェクトに適応するようにこのクラスを継続的に強化することは良い練習になります。これを簡単にするために、クラスを他のクラスから拡張できます。拡張クラスまたは派生クラスは、その基本クラスのすべての変数と関数を所有し (これは、誰も死なないことを除いて「継承」と呼ばれます)、派生クラスで定義されたすべての部分を含みます。
クラス内の要素を減らすことはできません。つまり、既存の関数や変数を登録解除することはできません。拡張クラスは常に単一の基本クラスに依存します。つまり、多重継承はサポートされません。クラスを拡張するには、キーワード「extends」を使用します。
<ol class="dp-c"> <li class="alt"><span><span><?php </span></span></li><li><span class="keyword">class</span><span> test { </span></li><li class="alt"><span class="keyword">public</span><span> </span><span class="keyword">function</span><span> __construct() { </span></li><li><span>} </span></li><li class="alt"><span class="keyword">public</span><span> </span><span class="keyword">function</span><span> name() { </span></li><li><span class="vars">$this</span><span>->xname(</span><span class="string">'John'</span><span>); </span></span></li> <li class="alt"><span>} </span></li> <li> <span class="keyword">private</span><span> </span><span class="keyword">function</span><span> showName(</span><span class="vars">$name</span><span>) { </span> </li> <li class="alt"> <span class="func">echo</span><span> </span><span class="string">'my name in test is '</span><span>.</span><span class="vars">$name</span><span>; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li> <span class="keyword">class</span><span> extendTest </span><span class="keyword">extends</span><span> test { </span> </li> <li class="alt"> <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> __construct() { </span> </li> <li><span>parent::__construct(); </span></li> <li class="alt"><span>} </span></li> <li> <span class="keyword">private</span><span> </span><span class="keyword">function</span><span> showName(</span><span class="vars">$name</span><span>) { </span> </li> <li class="alt"> <span class="func">echo</span><span> </span><span class="string">'my name in extendTest is '</span><span>.</span><span class="vars">$name</span><span>; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li> <span class="vars">$test</span><span> = </span><span class="keyword">new</span><span> extendTest(); </span> </li> <li class="alt"> <span class="vars">$test</span><span>->name(); </span> </li> <li><span>?> </span></li> </ol>
上の例は、Cart クラスのすべての変数と関数に加えて、追加の変数 $owner と追加の関数 set_owner() を含む Named_Cart という名前のクラスを定義します。これで、名前付きショッピング カートが通常の方法で作成され、ショッピング カートの所有者を設定および取得できるようになります。通常のショッピング カート クラスの関数は、名前付きショッピング カート クラスでも引き続き使用できます:
<ol class="dp-c"> <li class="alt"><span><span><?php </span></span></li><li><span class="vars">$ncart</span><span> = </span><span class="keyword">new</span><span> Named_Cart; </span><span class="comment">// 新建一个有名字的购物车 </span><span> </span></li><li class="alt"><span class="vars">$ncart</span><span>->set_owner(</span><span class="string">"kris"</span><span>); </span><span class="comment">// 给该购物车命名 </span><span> </span></span></li> <li> <span>print </span><span class="vars">$ncart</span><span>->owner; </span><span class="comment">// 输出该购物车主人的名字 </span><span> </span> </li> <li class="alt"> <span class="vars">$ncart</span><span>->add_item(</span><span class="string">"10"</span><span>, 1); </span><span class="comment">// (从购物车类中继承来的功能) </span><span> </span> </li> <li><span>?> </span></li> </ol>
これは、「父と子」関係とも呼ばれます。クラス (親クラス) を作成し、extends を使用して親クラスに基づいて新しいクラス (子クラス) を作成します。この新しいサブクラスを使用して、このサブクラスに基づいて別のクラスを作成することもできます。
注:
クラスは定義された後にのみ使用できます。 Cart クラスを継承するために Named_Cart クラスが必要な場合は、最初に Cart クラスを定義する必要があります。 Named_Cart クラスに基づいて別の Yellow_named_cart クラスを作成する必要がある場合は、最初に Named_Cart クラスを定義する必要があります。簡単に言うと、クラス定義の順序は非常に重要です。
継承の利点: 1. オブジェクト指向の 3 つの主要な特徴の 1 つ
2. コードの再利用性の向上 4.5. 継承は、サブクラスを使用して親クラスを「拡張」することですC++ は多重継承に属し、同じクラスは複数の親クラスを持つことができますPHP と JAVA は単一継承に属し、同じクラスは 1 つの親クラスのみです多重継承でも単一継承でもサブクラスは複数持つことができます2つのクラスを設計する際に共有できるメンバーがあれば、共有した内容を単独で基底クラスとして使用します
1.継承
1. サブクラスを宣言し、extends キーワードを使用して親クラスを継承 (拡張) します2. サブクラスは、メンバー属性メソッド、構築メソッドなどを含む、すべての内容を親クラスから継承できます。サブクラスで使用されます
2. アクセス型制御
サブクラスは親クラスからすべてを継承できますが、プライベートメンバーはクラス内で使用される場合にのみ使用でき、カプセル化する場合はサブクラス内で使用できません。 , 自分のクラス内をアクセスできるようにするだけでなく、サブクラスからも利用できるようにすることができますが、クラス外で使用することはできません
3. 親のメソッドをオーバーロードします。サブクラス内のクラス
1. サブクラスは親クラスと同じメソッド名を宣言できます。つまり、サブクラスは同じ名前の親クラスのメソッドをオーバーライドします2。親クラスに名前を付ける クラスメソッドの拡張3. サブクラス内の親クラスでオーバーライドされたメソッドを呼び出す
親クラス名::メソッド名()を使用する
4.サブクラス メソッドのコンストラクター。親クラスにもコンストラクター メソッドがある場合は、必ず親クラスでオーバーライドされたコンストラクター メソッドを呼び出してください。 注: サブクラスのオーバーロードされたメソッドには、親クラスのメソッドよりも低いアクセス許可を設定することはできません。 (サブクラスは権限を拡大できます。ただし、権限を減らすことはできません)
これがあなたのお役に立てば幸いです。
http://www.bkjia.com/PHPjc/445786.htmlwww.bkjia.comtrue