ホームページ php教程 php手册 PHP オブジェクト指向ガイド (7) 継承

PHP オブジェクト指向ガイド (7) 継承

Jun 13, 2016 pm 12:21 PM
php 完全な戦略 存在する 物体 継承する 重要 のために 分野

11. クラスの継承
オブジェクト指向の 3 つの重要な特徴の 1 つとして、継承はオブジェクト指向の分野で非常に重要な役割を果たします
聞いたことがないようです。オブジェクト指向言語の継承はサポートされていません。継承は、PHP5 のオブジェクト指向プログラミングの重要な機能の 1 つであり、以前に定義された 1 つ以上のクラスからデータと関数を継承し、新しいデータと関数を入力して再定義できる新しい派生クラスを作成することを指します。クラスの階層または階層を確立する。簡単に言うと、継承とは、子
クラスが親クラスのデータ構造とメソッドを自動的に共有する仕組みです。これはクラス間の関係です。クラスの
を定義して実装する場合、既存のクラスに基づいて実行したり、既存のクラスで定義されたコンテンツを
独自のコンテンツとして使用したり、新しいコンテンツを追加したりすることができます。たとえば、現在、クラス「person」があり、このクラスには
2 つのメンバー属性「名前と年齢」と 2 つのメンバー メソッド「話し方と歩き方」が含まれています。
プログラムには学生クラスが必要です。 , 学生も人間なので、学生もメンバー属性「名前と年齢」とメンバー
メンバーメソッド「話し方と歩き方」を持っているので、このクラスを継承した上で学生クラスを来させることができます。
学生クラスは人間のすべての属性を継承します。学校の属性はまだ残っているため、これらのメンバー属性
とメソッドを再宣言する必要はありません。作成した生徒クラスには、人間から受け継いだ属性やメソッドに加えて、生徒固有の「学校の属性」や「学習メソッド」を加えた、
こんな生徒がいます。クラスの継承は「拡張」とも呼ばれます。上記のことから、人間には 2 つの元の属性と 2 つのメソッドがあることがわかります。メソッド
、新しい学生クラスが拡張されます。
継承メカニズムを通じて、既存のデータ型を使用して新しいデータ型を定義できます。定義された新しいデータ型
には、新しく定義されたメンバーだけでなく、古いメンバーも含まれます。新しいクラスの派生に使用される既存のクラスを基本
クラスと呼び、親クラスやスーパークラスとも呼ばれます。既存のクラスから派生した新しいクラスは派生クラスと呼ばれ、サブクラスとも呼ばれます。
ソフトウェア開発では、クラスの継承により、作成されたソフトウェアがオープンで拡張可能になり、オブジェクトとクラスの作成が簡素化され、コードの再現性が向上します。継承を使用して、
はクラスの標準的な階層構造を提供します。クラスの継承関係により、公開機能を共有できるため、ソフトウェアの再利用性が向上します。
C 言語では、派生クラスは 1 つの基本クラスまたは複数の基本クラスから派生できます。 1 つの基本クラスから派生した継承は単一継承と呼ばれ、複数の基本クラスから派生した継承は多重継承と呼ばれます。
しかし、PHP と Java 言語には多重継承はなく、単一継承のみです。つまり、クラスは
1 つのクラスからのみデータを直接継承できます。これを単一継承と呼びます。
例:
以下は「human」クラスの抽象化です
コード スニペット



コードをコピーします

コードは次のとおりです

//「person」クラスを親クラスとして定義しますclass person{ //以下は person のメンバー属性ですvar $name; //人の名前

var $sex ; //人の性別

var $age; //人の年齢
//属性名 $name, 性別に値を割り当てるコンストラクター メソッドのパラメーターを定義します。 $性別と年齢 $age
function __construct($ name, $sex, $age){
$this->name=$name;
$this->sex=$sex; >$this->age=$age;
}
//この人の話し方は、自分の属性を伝えます
function Say() {
echo "私の名前は: "。 $this->name." 性別: ".$this->性別。" 私の年齢: ".$this->age."<br>"; >

ここでは、次のように継承を使用しない場合、「学生クラス」を作成します。 コード スニペット



コードをコピー

コードは次のとおりです:


//「人間」クラスを親クラスとして定義します
class Student{
//以下はその人のメンバー属性です
var $name; //その人の名前
var $sex; //人の性別
var $age; //生徒の学校の属性
//コンストラクターパラメータを属性名として定義します$名前、性別 $sex 、年齢 $age が割り当てられます。
function __construct($name="", $sex="", $age="", $school=""){
$this->名前=$名前;
$this->年齢=$年齢;
$this->学校=$学校; >//この人の話し方、自分の属性を伝える
function Say() {
echo "My name is: ".$this->name." Gender: ".$this -> sex." 私の年齢は: ".$this->age."<br>"
}
//この生徒は
関数をどのように学習するか() {
echo "My名前は: ".$this->name." 私は ".$this->school."<br>";
}
}
// サブクラスを定義します " Student class" を使用して "extends" キーワードを使用して "person" クラスを継承します
class Student extends Person{
var $school; //生徒がいる学校の属性
//このメソッドは学生が勉強する
functionstudy() {
echo "私の名前は: ".$this->name." 私は ".$this->school." で勉強しています。<br> ";
}
}


上記の "Student" クラスの定義を通じて、Student クラスは "extends" キーワードを使用して、Person クラス
のすべてのメンバー属性を結合します。すべてのメンバーメソッドを継承し、学校のメンバー属性「school」を拡張し、
学習メソッド「study()」を拡張します。現在、サブクラス「Student」と、このクラス インスタンスを使用して作成されたオブジェクトには、次の

属性とメソッドがあります。
学生クラス「Student」のメンバー属性は次のとおりです。
Name: name;
Age; : 年齢;
性別: 性別;
学校: 学校;
スピーキングメソッド:say();
学習メソッド:study( );
上記のクラス継承を利用することで、オブジェクトやクラスの作成作業が簡略化され、コードの再現性が高まります。しかし、上記の例からは、「再利用性」やその他の継承の影響は特に明らかではありません。より広く考えると、上記の学生、教師、エンジニア、医師、労働者など、人々の立場は無数にあります。 🎜> など、たくさんあります。各クラスが「人」に共通する属性やメソッドを定義すると、Work
Amount が大量に存在し、これらのプロパティやメソッドを継承できます。人間の「人」から。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

See all articles