ホームページ バックエンド開発 PHPチュートリアル PHP の抽象クラスとインターフェイスの違いと選択肢

PHP の抽象クラスとインターフェイスの違いと選択肢

Jun 13, 2016 pm 12:43 PM
echo Father function public

PHP の抽象クラスとインターフェイスの違いと選択肢

違い:

1. インターフェースはキーワードimplementsを通じて使用されます。抽象クラスを使用するには、キーワード extends を使用します。もちろん、キーワード extends を使用してインターフェイスを継承することもできます。

2. インターフェース内ではメンバ変数(クラス静的変数を含む)は宣言できませんが、クラス定数は宣言できます。さまざまなタイプのメンバー変数を抽象クラスで宣言して、データのカプセル化を実装できます。 (さらに、JAVA インターフェースのメンバー変数は public static Final 型として宣言する必要があります)

?

[php]?プレーンコピーを表示
  1. 要約?クラス?父?{??
  2. ????関数?meth1()?{??
  3. ??????????エコー?"meth1...
    "
    ;??
  4. ????}??
  5. ????抽象?関数?meth2();??
  6. ????public?$var1="var1";??
  7. ????パブリック?静的?$var2= "var2";??
  8. ????const?Var3="Var3";??
  9. }??
  10. クラス?息子?延長?父?{??
  11. ????関数?meth2()?{??
  12. ??????????エコー?「meth2?of?Son...
    ;??
  13. ????}??
  14. }??
  15. $s=新しい?Son();??
  16. echo?$s->var1."
    "
    ;??
  17. echo?父::$var2."
    "
    ;??
  18. echo?Father::Var3."
    "
    ;??
  19. ??
  20. ??
  21. インターフェース?IF父?{??
  22. ????//public?$iVar1="iVar1";??????メンバー変数をここのインターフェイス定義に含めることはできません??
  23. ????//public?static?$iVar2="iVar2";?静的変数をここのインターフェイス定義に含めることはできません??
  24. ????const?iVar3="iVar3";??
  25. ????関数?iMeth1();??
  26. }??
  27. クラス?ISon?実装?IFather?{??
  28. ????関数?iMeth1()?{??
  29. ??????エコー?"iMeth1...
    "
    ;?? >
  30. ????}??
  31. }??
  32. $ は=新しい?Ison();??
  33. echo?IFather::iVar3;??
  34. ?>??


3. インターフェイスにはコンストラクターがありませんが、抽象クラスにはコンストラクターがあります。

?

4. インターフェイスのメソッドはデフォルトでパブリック型ですが、抽象クラスのメソッドはプライベート、プロテクト、またはパブリックに変更できます。

5. クラスは同時に複数のインターフェースを実装できますが、クラスは 1 つの抽象クラスのみを継承できます。

?

抽象クラスまたはインターフェイス。

  • 密接に関連するオブジェクトによって使用されるモデルを作成したい場合は、抽象クラスを使用できます。無関係な多数のオブジェクトに採用される機能を作成する場合は、インターフェイスを使用します。
  • 動作を複数のソースから継承する必要がある場合は、インターフェイスを使用します。
  • すべてのクラスが共通の動作実装を共有することがわかっている場合は、抽象クラスを使用し、その中でその動作を実装します。


出典: http://blog.csdn.net/fanteathy/article/details/7309966

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

機能とはどういう意味ですか? 機能とはどういう意味ですか? Aug 04, 2023 am 10:33 AM

ファンクションとは、関数を意味します。これは、特定の関数を備えた再利用可能なコード ブロックです。プログラムの基本コンポーネントの 1 つです。入力パラメータを受け取り、特定の操作を実行し、結果を返すことができます。その目的は、再利用可能なコード ブロックをカプセル化することです。コードの再利用性と保守性を向上させるコード。

iOS の開発者バージョンとパブリック バージョンの違いは何ですか? iOS の開発者バージョンとパブリック バージョンの違いは何ですか? Mar 01, 2024 pm 12:55 PM

毎年、Apple が iOS と macOS の新しいメジャー バージョンをリリースする前に、ユーザーは数か月前にベータ版をダウンロードして最初に体験することができます。同ソフトウェアは一般ユーザーと開発者の両方が使用するため、Appleは開発者向けベータ版のパブリックベータ版である開発者版とパブリック版を両方向けに開始した。 iOS の開発者バージョンとパブリック バージョンの違いは何ですか?文字通りに言うと、開発者バージョンは開発者テスト バージョンであり、パブリック バージョンは公開テスト バージョンです。開発者バージョンとパブリック バージョンは、異なるユーザーを対象としています。開発者バージョンは、Apple が開発者によるテストのために使用します。ダウンロードしてアップグレードするには、Apple 開発者アカウントが必要です。

テクノロジーの世界を探索できる、厳選された 5 つの Go 言語オープンソース プロジェクト テクノロジーの世界を探索できる、厳選された 5 つの Go 言語オープンソース プロジェクト Jan 30, 2024 am 09:08 AM

今日の急速な技術発展の時代では、雨後の筍のようにプログラミング言語が出現しています。多くの注目を集めている言語の 1 つは Go 言語です。Go 言語は、そのシンプルさ、効率性、同時実行の安全性などの機能により多くの開発者に愛されています。 Go 言語は、多くの優れたオープンソース プロジェクトがある強力なエコシステムで知られています。この記事では、厳選された 5 つの Go 言語オープンソース プロジェクトを紹介し、読者を Go 言語オープンソース プロジェクトの世界へ導きます。 KubernetesKubernetes は、自動化されたオープンソースのコンテナ オーケストレーション エンジンです。

Go 言語開発の要点: 5 つの人気のあるフレームワークの推奨事項 Go 言語開発の要点: 5 つの人気のあるフレームワークの推奨事項 Mar 24, 2024 pm 01:15 PM

「Go 言語開発の要点: 5 つの人気フレームワークの推奨事項」 高速で効率的なプログラミング言語として、Go 言語はますます多くの開発者に好まれています。開発効率を向上させ、コード構造を最適化するために、多くの開発者はフレームワークを使用してアプリケーションを迅速に構築することを選択します。 Go 言語の世界には、選択できる優れたフレームワークが数多くあります。この記事では、5 つの人気のある Go 言語フレームワークを紹介し、読者がこれらのフレームワークをよりよく理解して使用できるように、具体的なコード例を示します。 1.GinGin は高速な軽量 Web フレームワークです。

Golang の Web フレームワーク Echo フレームワークを使用した分散タスク スケジューリングの実装 Golang の Web フレームワーク Echo フレームワークを使用した分散タスク スケジューリングの実装 Jun 24, 2023 am 11:49 AM

インターネットの発達や情報技術の進歩によりビッグデータの時代が到来し、データ分析や機械学習などの分野も広く活用されています。これらの分野では、タスクのスケジューリングは避けられない問題です。効率的なタスクのスケジューリングを実現する方法は、効率を向上させるために重要です。この記事では、Golang の Web フレームワーク Echo フレームワークを使用して分散タスク スケジューリングを実装する方法を紹介します。 1. Echo フレームワークの概要 Echo は、高性能、スケーラブル、軽量の GoWeb フレームワークです。 HTTPに基づいています

Laravel 開発: Laravel Echo と Pusher を使用して WebSocket 通信を実装するにはどうすればよいですか? Laravel 開発: Laravel Echo と Pusher を使用して WebSocket 通信を実装するにはどうすればよいですか? Jun 13, 2023 pm 05:01 PM

Laravel は、拡張性と効率性に優れた人気の PHP フレームワークであり、開発者が高品質の Web アプリケーションを迅速に構築できる強力なツールとライブラリを多数提供しています。その中でも、LaravelEcho と Pusher は、WebSocket 通信を簡単に実装できる 2 つの非常に重要なツールであり、この記事では、Laravel アプリケーションでこれら 2 つのツールを使用する方法について詳しく説明します。 WebSocket とは何ですか? Webソケット

Python の「enumerate()」関数の目的は何ですか? Python の「enumerate()」関数の目的は何ですか? Sep 01, 2023 am 11:29 AM

この記事では、Python の enumerate() 関数と「enumerate()」関数の目的について学びます。 enumerate() 関数とは何ですか? Python の enumerate() 関数は、データ コレクションをパラメータとして受け取り、列挙オブジェクトを返します。列挙オブジェクトはキーと値のペアとして返されます。キーは各項目に対応するインデックス、値は項目です。構文 enumerate(iterable,start) パラメータ iterable - 渡されたデータ コレクションは、iterablestart と呼ばれる列挙オブジェクトとして返すことができます。 - 名前が示すように、列挙オブジェクトの開始インデックスは start によって定義されます。無視したら

MySQL.procテーブルの役割と機能の詳しい説明 MySQL.procテーブルの役割と機能の詳しい説明 Mar 16, 2024 am 09:03 AM

MySQL.proc テーブルの役割と機能の詳細な説明。MySQL は人気のあるリレーショナル データベース管理システムです。開発者が MySQL を使用する場合、多くの場合、ストアド プロシージャ (StoredProcedure) の作成と管理が必要になります。 MySQL.proc テーブルは非常に重要なシステム テーブルであり、ストアド プロシージャの名前、定義、パラメータなど、データベース内のすべてのストアド プロシージャに関連する情報が保存されます。この記事では、MySQL.proc テーブルの役割と機能について詳しく説明します。

See all articles