ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクト指向ガイド (7) Inheritance_PHP チュートリアル

PHP オブジェクト指向ガイド (7) Inheritance_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:43:56699ブラウズ

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



コードをコピーします

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


//「person」クラスを親クラスとして定義します
class Person{
//以下はその人のメンバー属性です
var $name; //その人の名前
var $sex; //その人の年齢
;パラメータとして name$name、gender$ 性別、年齢 $age が割り当てられます

function __construct($name, $sex, $age){ $this->name=$name; $this->sex= $sex; $this->age =$age; }
//この人の話し方、自分の属性を伝える
function Say() {
echo "私の名前は: ".$this-> name." 性別: ". $this->sex." 私の年齢: ".$this->age."
"
}
}


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



コードをコピーします

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

//「人間」クラスを親クラスとして定義します
class Student{
//以下は人物のメンバー属性です
var $name //人物の名前
var $sex;
var $age; //その人の年齢
var $school //生徒がいる学校の属性
//属性名 $name、性別 $sex に値を割り当てるコンストラクター パラメーターを定義します。年齢 $age
function __construct($name= ””, $sex=””, $age=””, $school=””){
$this->name=$name;
$this-> =$sex;
$this-> age=$age;
$this->school=$school
//この人の話し方を教えてください
function Say() {
echo "私の名前:「.$this->名前」 性別:「.$this->性別」 私の年齢:「.$this->年齢」
;
}
/ /この学生はメソッドを勉強しました
functionstudy() {
echo "私の名前は: ".$this->name." 私は ".$this->school" で勉強しています。
";
}
//「person」クラスを継承するために「extends」キーワードを使用してサブクラス「student class」を定義します
class Student extends Person{
var $school; //生徒がいる学校の属性
//この生徒の学習方法
functionstudy() {
echo "私の名前は: ".$this->name." 私は ".$this->school" で勉強しています。

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



http://www.bkjia.com/PHPjc/320641.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/320641.html

技術記事
11. クラスの継承 オブジェクト指向の 3 つの重要な機能の 1 つとして、継承はオブジェクト指向の分野で非常に重要な役割を果たしています。 .

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