ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクト指向継承例の詳細説明

PHPオブジェクト指向継承例の詳細説明

伊谢尔伦
伊谢尔伦オリジナル
2017-06-30 09:16:131236ブラウズ

オブジェクト指向の3つの重要な機能の1つである継承は、オブジェクト指向の分野で非常に重要な役割を果たしています。継承をサポートしていないオブジェクト指向言語は聞いたことがないようです。

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

//定义一个“人”类作为父类 
class Person{ 
//下面是人的成员属性 
var $name; //人的名子 
var $sex; //人的性别 
var $age; //人的年龄 
//定义一个
构造方法
参数为属性姓名$name、性别$sex和年龄$age进行赋值 
function construct($name, $sex, $age){ 
$this->name=$name; 
$this->sex=$sex; 
$this->age=$age; 
} 
//这个人可以说话的方法, 说出自己的属性 
function say() { 
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 
} 
}

継承を使用しない場合は、以下のようになります: コードスニペット
//定义一个“人”类做为父类 
class Student{ 
//下面是人的成员属性 
var $name; //人的名子 
var $sex; //人的性别 
var $age; //人的年龄 
var $school; //学生所在学校的属性 
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值 
function construct($name=””, $sex=””, $age=””, $school=””){ 
$this->name=$name; 
$this->sex=$sex; 
$this->age=$age; 
$this->school=$school; 
} 
//这个人可以说话的方法, 说出自己的属性 
function say() { 
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 
} 
//这个学生学习的方法 
function study() { 
echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>"; 
} 
} 
//定义一个子类“学生类“使用”extends”关键字来继承”人”类 
class Student extends Person{ 
var $school; //学生所在学校的属性 
//这个学生学习的方法 
function study() { 
echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>"; 
} 
}

定義を通して。上記の「Student」クラスの Student クラスは、「extends」キーワードを使用して Person クラスのすべてのメンバー属性とメンバー メソッドを継承し、所在地の学校のメンバー属性「school」と研究を拡張します。メソッド「study()」。サブクラス「Student」と、このクラスのインスタンスを使用して作成されたオブジェクトには、次のプロパティとメソッドがあります。
学生クラス「Student」のメンバー プロパティは次のとおりです。
年齢: 年齢
性別: 性別 ; School: school;
学生クラス「Student」のメンバーメソッドは次のとおりです:
Speakingメソッド:say();
Learningメソッド:study();
上記のクラスを使用することで、ワークロードが簡素化されます。継承により、コードの再現性が向上します。しかし、上記の例からは、「再利用性」やその他の継承の影響は特に明らかではありません。より広く考えると、たとえば、上記の学生には教師、エンジニア、医師、労働者などが含まれます。 、たくさんあります。各クラスが「人」に共通の属性とメソッドを定義すると、多くの作業が発生します。これらの属性とメソッドは「人」という人間から継承できます。

以上がPHPオブジェクト指向継承例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。