ホームページ > バックエンド開発 > PHPチュートリアル > クラスの基本定義と概念 (拡張 2)

クラスの基本定義と概念 (拡張 2)

WBOY
リリース: 2016-06-23 13:01:30
オリジナル
956 人が閲覧しました

継承について

1. 継承とは、基底クラスから 1 つ以上の派生クラスを取得する仕組みです

2. 他のクラスから継承するクラスは、通常、そのクラスのサブクラスと呼ばれます。親子関係は、子クラスが親クラスの特殊効果を継承することを示します。これらの機能は、属性とメソッドで構成されます。

(親クラスはスーパークラス、基本クラスとも呼ばれ、サブクラスは親クラスの拡張とも呼ばれます)

3. 派生クラスは親クラスの機能を拡張および変更できます

< ?php    class ShopProduct{         function getSummaryLine() {            echo 'i am father\'s getSummaryLine function '."\n";        }    }    class Cdproduct extends ShopProduct{         function getSummaryLine() {            echo 'i am son\'s getSummaryLine function'."\n";        }    }    $product1 = new ShopProduct();    $product2 = new Cdproduct();    $product1->getSummaryLine();    echo "-------------\n";    $product2->getSummaryLine();?>
ログイン後にコピー

出力結果:

i am father's getSummaryLine function -------------i am son's getSummaryLine function  //变了
ログイン後にコピー

4. オブジェクトではなくクラスのメソッドを参照するには、-> の代わりに :: を使用します。

5. サブクラスでコンストラクターを定義する場合、親クラスのコンストラクターにパラメーターを渡す必要があります。そうしないと、不完全なオブジェクトが得られる可能性があります。

parent::__construct() を使用する必要があります。

結果が表示されません。はい

< ?php    class ShopProduct{        public $title;         function __construct($title) { //父类的构造方法,这里看到需要传入一个参数$title  //————第四步            $this->title = $title;            echo 'i am father\'s construct and title is'.$title."\n";        }        function getSummaryLine() {            echo 'i am father\'s getSummaryLine function '."\n";        }    }    class Cdproduct extends ShopProduct{        public $sonTitle;        function __construct($title,$sonTitle) { //子类的构造方法,这里添加一个新的参数$sonTitle  //————第二步            parent::__construct($title); //这里就是调用父类的构造方法,因为父类的构造方法是只有一个参数$title,所以只需要传入一个  //————第三步            $this->sonTitle = $sonTitle;  //这个就是子类自己的构造方法想增加的一个属性                                          //上面这几行加起来的意思就是子类需要父类的构造方法,并且在父类的构造方法的基础(获得了父类的$title)上增加一个子类自己的属性($sonTitle)            echo  'i am son\'s construct and title is'.sonTitle."\n";        }        function getSummaryLine() {            echo 'i am son\'s getSummaryLine function'."\n";        }    }    $product1 = new ShopProduct('TTTTitle');       echo "-------------\n";    $product2 = new Cdproduct('TTTitle2222','dasdsada'); //————第一步(如果单单看Cdproduct这个子类的实例化的过程的话,就是四步)    echo "-------------\n";    $product1->getSummaryLine();    echo "-------------\n";    $product2->getSummaryLine();?>
ログイン後にコピー

各サブクラスは、独自のプロパティを設定する前に、親クラスのコンストラクターを呼び出します。親クラスはそれ自体のデータを知る必要があるだけです。子クラスについては親クラスに何も伝えないようにするのが経験則です。 (実際、オブジェクト指向開発では、「特定のタスクに焦点を当て、外部コンテキストを無視する」)

6. public、private、protected - 可視性キーワードを使用すると、顧客が必要とするクラスの部分のみを公開できます。オブジェクト設定 明確なインターフェイス。

public はすべてオープンになり、private は現在のクラスに対してのみ呼び出すことができ、protected は現在のクラスとサブクラスに対して呼び出すことができます。セキュリティ レベルは public < protected < です (アクセシビリティを厳密に制御する傾向があります)

6.1 アクセス方法

セキュリティ上の理由からアクセシビリティは厳しく制限されているので、それを行う方法があります

i am father's construct and title isTTTTitle-------------i am father's construct and title isTTTitle2222i am son's construct and title issonTitle-------------i am father's getSummaryLine function -------------i am son's getSummaryLine function
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート