ホームページ バックエンド開発 PHPチュートリアル 抽象メソッドと抽象クラス_PHP チュートリアル

抽象メソッドと抽象クラス_PHP チュートリアル

Jul 15, 2016 pm 01:24 PM
php 層状の そして 存在する 物体 抽象的な 方法 はい 構築する プログラム 親切 構造 継承する 言語 合格 のために

オブジェクト指向プログラムは、クラスの階層構造を通じて構築されます。PHP などの単一継承言語では、クラスの継承は 1 つ以上のサブクラスを持ち、各サブクラスは 1 つ以上の下位クラスを継承します。もちろん、適切に設計されたシステムでは、アプリケーション コードが機能するように設計されている場合、各ルート クラスに便利なインターフェイスが必要です。

抽象メソッドは、サブクラス シンボル内の一般的なメソッドのプレースホルダーです (スペースを消費しますが、機能しません)。通常のメソッドとは異なります。クラスに 1 つ以上の抽象メソッドが存在する場合、そのクラスは抽象クラスをインスタンス化することができず、それらを継承してからサブクラスをインスタンス化することもできます。サブクラスのテンプレートです。

すべての抽象メソッドをオーバーライドしない場合、クラスに抽象メソッドが含まれている場合でも、サブクラスは通常のクラスになります。 、クラスが抽象であることを宣言し、class キーワードの前に abstract を追加する必要があります。

抽象メソッドを宣言する構文は、一般メソッドの宣言と同じです。抽象メソッドには中括弧 { で囲まれた本体がありません。

図 1 の例では、 getArea メソッドを含むクラス Shape を定義していますが、形状が分からないと形状の面積を決定することは不可能です。では、getArea メソッドを抽象メソッドとして宣言します。Shape オブジェクトをインスタンス化することはできませんが、例 6.13 のように、それを式で使用することはできます。

抽象メソッドのみを含むクラスを作成する場合は、この状況を説明するために、PHP には、interface およびimplements キーワードがあり、クラス定義を記述するために、extends の代わりに、interface を使用したり、myClass の実装を使用したりすることができます。 myIterface。これら 2 つのメソッドは個人の好みに応じて選択できます。

2 つのメソッド つまり、
1. aaa には抽象メソッドのみがあり、一般的なメソッドは存在しないことに注意してください。メソッド)

class bbb extends aaa{} (bbb の aaa の抽象メソッドを上書き)

2. インターフェース aaa {}

class bbbimplements aaa{} (bbb の aaa の抽象メソッドをオーバーライド)

*/

抽象クラス

1

<?php    //abstract root class 抽象根类    abstract class Shape    {        abstract function getArea(); //定义一个抽象方法    }    //abstract child class 抽象子类    abstract class Polygon extends Shape //多边形    {        abstract function getNumberOfSides();    }    //concrete class 实体类 三角形类    class Triangle extends Polygon    {        public $base;        public $height;        public function getArea() //覆写计算面积方法        {            return(($this-&gt;base * $this-&gt;height)/2);        }        public function getNumberOfSides() //覆写边数统计方法        {            return(3);        }    }    //concrete class 实体类四边形    class Rectangle extends Polygon    {        public $width;        public $height;        public function getArea()        {            return($this-&gt;width * $this-&gt;height);        }        public function getNumberOfSides()        {            return(4);        }    }    //concrete class 实体类 圆形    class Circle extends Shape    {        public $radius;        public function getArea()        {            return(pi() * $this-&gt;radius * $this-&gt;radius);        }    }    //concrete root class 定义一个颜色类    class Color    {        public $name;    }    $myCollection = array(); //建立形状的集合,放入数组    //make a rectangle    $r = new Rectangle;    $r-&gt;width = 5;    $r-&gt;height = 7;    $myCollection[] = $r;    unset($r);    //make a triangle    $t = new Triangle;    $t-&gt;base = 4;    $t-&gt;height = 5;    $myCollection[] = $t;    unset($t);    //make a circle    $c = new Circle;    $c-&gt;radius = 3;    $myCollection[] = $c;    unset($c);    //make a color    $c = new Color;    $c-&gt;name = "blue";    $myCollection[] = $c;    unset($c);    foreach($myCollection as $s)    {        if($s instanceof Shape) //如果$s是Shape类的实例        {            print("Area: " . $s-&gt;getArea() .                "<br>n");        }        if($s instanceof Polygon)        {            print("Sides: " .                $s-&gt;getNumberOfSides() .                "<br>n");        }        if($s instanceof Color)        {            print("Color: $s-&gt;name<br>n");        }        print("<br>n");    } ?>

ログイン後にコピー


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

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446719.html技術記事オブジェクト指向プログラムは、クラスの階層構造を通じて構築されます。PHP などの単一継承言語では、クラスの継承は 1 つ以上のサブクラスを持ち、各サブクラスから 1 つのクラスが継承されます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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 について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 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) をセットアップする方法

See all articles