ホームページ >バックエンド開発 >PHPチュートリアル >PHP におけるオブジェクト指向の継承

PHP におけるオブジェクト指向の継承

易达
易达オリジナル
2020-05-24 15:52:421811ブラウズ

この記事の目的:

1. 継承の定義を理解する

2. 継承の利点をマスターする

(1).定義

PHP におけるオブジェクト指向の継承

上の図を注意深く見て、共通点を見つけるために 1 つのことを行ってみましょう。

共通点:

1. それらはすべて同じ属性とメソッドをいくつか持っています

2. それらはすべて人間です

通常のクラスの定義に従います。上記 2 つのクラスを実装するには、NBA プレーヤー クラスのすべての属性とメソッドを個別に定義する必要があり、女性アンカー クラスを定義する場合は、名前、身長、体重、食事方法などの属性を繰り返し記述する必要があります。 Student と呼ばれる別のクラスがある場合、これらの共通の属性と共通のメソッドを再度記述する必要があることを意味します。コードは多くの場所で類似しており、コードの冗長性が増加します。この冗長性により、コードをより簡潔にして再利用可能にするために、これらの共通の属性とメソッドをまとめて記述し、各クラスでこの共通の属性とメソッドを呼び出すことができます。簡潔ですか? それでは、このアプローチを継承と呼びます。

具体的には、以下に示すように方法を実行します。

PHP におけるオブジェクト指向の継承

まず、「person」クラスを作成します。どちらも両方のクラスに共通の属性とメソッドを持ち、NBA プレーヤーと女性アンカーの両方に「person」クラスを継承させます。

PHP におけるオブジェクト指向の継承

コンセプト: 継承されるのはクラスは親クラス (people など) と呼ばれ、継承されたクラスはサブクラスと呼ばれます

概要: 継承とは何ですか? 継承は、コードの再利用性を向上させ、コードの再利用性を向上させ、コードの冗長性は現実世界の遺伝と同じです。子供は親の遺伝子の一部を受け継ぐため、生まれたときには人間と共通の属性と行動を持つことになります

(2) 継承の利点

1. コードの再利用性を向上させ、プログラミングの時間とコストを節約します

親クラスで定義されたプロパティとメソッドにはサブクラスが必要ありませんクラス内で定義が繰り返される場合、サブクラスが親クラスを継承している限り、そのサブクラスは親クラスのすべてのプロパティとメソッドを持ちます

2。同じ親クラスの下にあるすべてのサブクラスは同等に扱うことができます。呼び出すとき

たとえば、NBA選手であっても、女性アンカーであっても、彼らは人間であるため、呼び出すときは、食事などの親クラスのメソッドを直接呼び出すことができます。クラスが NBA プレーヤーか女性アンカーかに関係なく

3. サブクラスは、親クラス

##a によって定義されたクラス メンバーを変更および調整できます。これを Overwrite

# と呼びます。 ##b. サブクラスを変更したら、サブクラスで定義されたメソッドに従って実行します

これは突然変異に相当します

何かを学ぶには、理論を知るだけでなく、関連する理論的実践を持っています。実際、すべての理論は実践から得られます。はい、私は時々、理論は非常に抽象的ですが、誰もが一定の実務経験を積んだ後にそれを要約し、簡潔で簡単に要約する必要があることを繰り返し強調してきました。 「理論」を理解する習慣が身につくと、誰でも多くの知識をより深く理解できるようになり、同時に物事の本質が掴みやすくなり、問題を分析する力も身につくと思います。改善されること。

わかりました。理論と実践を組み合わせる必要があるので、次に、コードを介して実践的なデモンストレーションを実行し、コード内で継承がどのように実装されるかを確認します。

( 3)具体的なコード

<?php
/***
 * 案例目标
 * 1.掌握继承的定义
   2.掌握继承的好处
 */
 //定义一个“人”类
class Human{
    public $name = "";//姓名
    public $height = "";//身高
    public $weight = "";//体重

    public function eat($food){
        echo $this->name."在吃".$food."<br/>";
    }
}
//女主播
class Anchors extends Human{
    public $name = "";
    public $stageName = "";
    public function __construct( $name,$stageName ){
        $this->name = $name;
        $this->stageName = $stageName;
    }
    public function singing(){
        echo "我是女主播,我会唱歌<br/>";
    }
    //重写方法eat
    public function  eat($food){
        echo "我是女主播,我是边唱歌边吃{$food}<br/>";
    }
}
//Nba球员类
 class NbaPlayer extends Human{
   //因为父类已经有了,所以就不需要再写了,通过extends来实现
    // public $name  = "";//姓名
    // public $height = "";//身高
    // public $weight = "";//体重

    public $team = "";//团队
    public $playerName = "";//球员号码

    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        echo "构造函数执行了,当前对象是{$this->name}<br/>";
    }
    
   
   //跑步
    public function run(){
        echo "跑步中<br/>";
    }
    //跳跃
    public function jump(){
        echo "跳跃<br/>";
    }
    //运球
    public function dribble(){
        echo "运球<br/>";
    } 
    //传球
    public function pass(){
        echo "传球<br/>";
    }
    //投篮
    public function shoot(){
        echo "投篮<br/>";
    }
    //扣篮
    public function dunk(){
        echo "扣篮<br/>";
    }
    //重写方法eat ,只要名称和父类一样就是代表重写了不一定参数也要保持一样
    public function eat($food){
        echo "我是Nba球员,我是站着吃饭,边吃{$food}边看球赛<br/>";
    }
 }
 //测试,NBA球员,没有直接定义name,身高,体重,现在输出一下看结果有没有
 //创建乔丹对象
 $jordon = new NbaPlayer("乔丹","1.98米","98公斤","公牛","23");
 //输出乔丹对象
 echo "名称= ".$jordon->name."<br/>";

 //测试,NBA球员,没有直接定义eat方法,现在输出一下看结果有没有
 echo $jordon->eat("苹果");
 //证明第二个好处,只要是个人就可以调用它的eat方法
 $linda = new Anchors("琳达","LD");
 echo $linda->eat("苹果");
 //测试第三个好处是否真实
 //思路1.为女主播和NBA球员2个类分别重写eat方法
//    2.再次执行2个对象的eat方法
//  会发现一旦子类重写了父类的方法,那么就会调用子类自己的方法了,这里就大家自己写下,因为上面我已经调用了eat方法,一旦重写了,上面的结果会变

?>
上記のコードのデモンストレーションを通じて、次のことを要約します:


1. extends は継承を意味します。このキーワードを通じて、サブクラスは親クラスを継承できます。親クラスのすべての属性とメソッドを共有する

2. 継承されたコードのその他の特徴:

#● サブクラス コンストラクターでは、$this->gt;

を介して直接アクセスすることもできます。

# PHP では、extends 後に継承できるクラスは 1 つだけであり、複数のクラスの継承には使用できません。そうでない場合は、エラーが報告されます。

#概要:

この記事 実際、目標は 2 つだけです。継承の定義と利点を知ることです。最後に、コードを通じて継承の利点をより深く理解できると考えています。

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

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