検索
ホームページバックエンド開発PHPチュートリアルPHPにおけるstatic、final、interface、abstractの違い

この記事では主に、PHP における static、final、interface、abstract の違いを紹介します。一定の参考値があります。ここで共有します。必要な友人は参考にしてください。

final

親クラスのメソッドがfinalと宣言されている場合、サブクラスはそのメソッドをオーバーライドできません。クラスがfinal宣言されている場合、そのクラスを継承することはできません。

注: プロパティを Final として定義することはできません。final として定義できるのはクラスとメソッドのみです。

static

静的変数には、ローカル変数またはグローバル変数があります。プログラムセグメントが実行されても、静的変数は消えません。メモリ内にまだ存在しており、次回定義されます。これは以前の値のままです。再帰またはサブ関数で以前の値を保持するためによく使用されます。変数やメソッドの定義に使用できます。これはシングルトン モードでも使用されます (

1)。一般に、静的属性はクラスのパブリック データを保存するために使用されます。

2. 静的メソッド内でアクセスできるのは、このクラスと親クラスのプロパティを含む静的プロパティのみです。

#3. 静的メンバーは次のとおりです。オブジェクトをインスタンス化せずにアクセスします

4. このクラス内の静的プロパティにアクセスするには、self または static キーワードを使用します。続く変数には、self::$a または static::$a

# のように、$ が含まれている必要があります。 ##5. 親クラスにアクセスする 静的属性にはparentを使用します (parent::$name

6. クラス外の静的変数またはメソッドにアクセスする場合は、インスタンス化せずにクラス名を使用して直接アクセスします) 。例: Me::$pan および Me::abc()

abstract

抽象クラスabstract class

1.抽象クラスとは、クラスと抽象メソッド(クラスメソッドの関数キーワードの前に抽象キーワード)の前に抽象キーワードを追加したクラスを指します。

2 .抽象クラスは直接インスタンス化できません。抽象クラスは、サブクラスに必要なメソッドのみを定義 (または部分的に実装) します。サブクラスは、抽象クラスを継承し、抽象クラス内のすべての抽象メソッドを実装することによって、抽象クラスを具体化できます。

3.サブクラスをインスタンス化する必要がある場合は、抽象クラス内のすべての抽象メソッドを実装する必要があります。サブクラスが抽象クラス内のすべての抽象メソッドを実装していない場合、サブクラスも抽象クラスであり、クラス内でその前にabstractキーワードを付ける必要があり、インスタンス化できません。

4.サブクラスが抽象メソッドを実装する場合、サブクラスの抽象メソッドのアクセス制御は、親クラスの抽象メソッドのアクセス制御よりも厳密にすることはできません。つまり、(A 親クラス、B サブクラス)

(1 ) A の abstract_func() が public として宣言されている場合、B の abstract_func() の宣言は public のみにすることができ、protected または private にすることはできません

(2) A の abstract_func() の場合が protected として宣言されている場合、B A の abstract_func() の宣言は public または protected にすることができますが、private にすることはできません

(3) A の abstract_func() が private として宣言されている場合、次のように定義することはできません。プライベート! (

致命的エラー

: 抽象関数 A::abstract_func() はプライベートとして宣言できません ) interface

1.抽象クラスは具体的な実装の標準を提供しますが、インターフェイスは純粋なテンプレートです。インターフェイスは関数のみを定義し、実装内容は定義しません。インターフェースはキーワードinterfaceで宣言されます。

2 .インターフェイスは完全に抽象です。宣言できるのはメソッドとパブリック メソッドのみです。プライベート メソッドとプロテクト メソッドを宣言できず、メソッド本体を定義できず、インスタンス変数も宣言できません。

3.インターフェイスは定数変数を宣言できます。しかし、インターフェイスに定数変数を配置することは、インターフェイスとしての存在目的に違反し、インターフェイスとクラスの異なる値を混乱させます。本当に必要な場合は、対応する抽象クラスまたはクラスに配置できます。

4.インターフェイスを実装するクラスは、そのインターフェイスで定義されているすべてのメソッドを実装する必要があります。それ以外の場合、クラスは抽象として宣言される必要があります。

5.クラスは、宣言内でimplements キーワードを使用してインターフェイスを実装できます。これを実行した後、インターフェイスを実装する具体的なプロセスは、抽象メソッドのみを含む抽象クラスを継承するのと同じになります。

6.クラスは親クラスを継承し、同時に任意の数のインターフェイスを実装できます。 extends 句は、implements 句の前に置く必要があります。 PHP は 1 つの親クラスからの継承のみをサポートするため、extends キーワードの後に​​はクラス名のみを指定できます。 ######7。インターフェースは別のインターフェースを実装することはできませんが、複数のインターフェースを継承できます

#3. 抽象クラスとインターフェースの類似点と相違点

##1. 類似点:

(1) 両方です抽象クラスなのでインスタンス化できません。

(2) インターフェース実装クラスと抽象クラスのサブクラスの両方が、宣言された抽象メソッドを実装する必要があります。

2. 相違点:

(1) インターフェースはimplementsを使って実装し、抽象クラスはextendsを使って継承する必要があります。

(2) クラスは複数のインターフェースを実装できますが、クラスが継承できる抽象クラスは 1 つだけです。

(3) インターフェースは特定の機能の実装を重視するのに対し、抽象クラスは所有関係を重視します。

(4) インターフェース実装クラスと抽象クラスのサブクラスは、対応する抽象メソッドを実装する必要がありますが、実装形式が異なります。インターフェイス内のすべてのメソッドは抽象メソッドであり、宣言のみが行われ (宣言、メソッド本体はありません)、実装クラスはそれを実装する必要があります。抽象クラスのサブクラスは選択的に実装できます。

この選択には 2 つの意味があります:

a) 抽象クラスのすべてのメソッドが抽象であるわけではありません。抽象を持つメソッドのみが抽象であり、サブクラスはそれらを実装する必要があります。抽象を持たないメソッドの場合、メソッド本体は抽象クラスで定義する必要があります。

b) 抽象クラスのサブクラスがそれを継承する場合、非抽象メソッドを直接継承またはオーバーライドできますが、抽象メソッドの場合は、実装することを選択することも、そのサブクラスに任せることもできますが、このクラスは抽象クラスとしても宣言する必要があります。抽象クラスなので当然インスタンス化できません。

(5) 抽象クラスはインターフェースとクラスの仲介者です。抽象クラスはインターフェイスとクラスを接続する役割を果たします。

一方では、抽象クラスは抽象的であり、サブクラスが実装する必要がある関数を標準化するために抽象メソッドを宣言できます;

一方では、サブクラスが使用するデフォルトのメソッド本体を定義できます直接、またはオーバーライドします。さらに、継承を通じてサブクラスで使用する独自のインスタンス変数を定義できます。

(6) インターフェイス内の抽象メソッドの前に抽象キーワードを追加することはできません。抽象メソッドはデフォルトで暗黙的であり、抽象メソッドの継承を防ぐために、final キーワードを追加することはできません。抽象クラスでは、抽象メソッドとして明示的に宣言されていることを示すために、抽象メソッドの前に abstract を追加する必要があります。

(7) インターフェース内の抽象メソッドは、デフォルトでは public であり、public のみが可能であり、private または protected 修飾子で変更することはできません。抽象クラスの抽象メソッドは、public および protected で変更できますが、private で変更することはできません。

3. インターフェースの適用場面

(1) クラスは、その実装方法に関わらず、連携のために特定のインターフェースを必要とします。

(2) 特定の機能を実現できる識別子として存在する場合もあれば、インターフェースメソッドを持たない純粋な識別子である場合もあります。

(3) クラスのグループを単一のクラスとして扱う必要があり、呼び出し元はインターフェイスを通じてのみこのクラスのグループに連絡します。

(4) 特定の機能を複数実装する必要があり、それらの機能は全く関連性がない場合があります。

4. 抽象クラスの適用場面

つまり、統一インターフェースとインスタンス変数やデフォルトメソッドの両方が必要な場合に利用できます。最も一般的なものは次のとおりです。

(1) インターフェイスのセットを定義しますが、各実装クラスにすべてのインターフェイスの実装を強制したくありません。抽象クラスを使用してメソッド本体のセット、または空のメソッド本体を定義し、サブクラスが対象とするメソッドを選択できるようにすることができます。

(2) 純粋なインターフェースだけではクラス間の連携を満足できない場合があり、異なる関係を区別するためにクラス内の状態を表す変数も必要となります。抽象の仲介的な役割は、これをうまく満たすことができます。

(3) 相互に調整されたメソッドのセットを標準化します。その一部は共通で状態に依存せず、サブクラスが個別に実装する必要なく共有できますが、他のメソッドは各サブクラスで実装する必要があります。特定の状態に応じて特定の機能を実現します。

上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

php の経度および緯度に基づく並べ替えと、経度および緯度に基づく距離セグメントのフィルタリング

PHP における Define と Const の違い

以上がPHPにおけるstatic、final、interface、abstractの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPコードの最適化:メモリの使用と実行時間の短縮PHPコードの最適化:メモリの使用と実行時間の短縮May 10, 2025 am 12:04 AM

TooptimizePHPcodeforreducedmemoryusageandexecutiontime,followthesesteps:1)Usereferencesinsteadofcopyinglargedatastructurestoreducememoryconsumption.2)LeveragePHP'sbuilt-infunctionslikearray_mapforfasterexecution.3)Implementcachingmechanisms,suchasAPC

PHPメール:ステップバイステップ送信ガイドPHPメール:ステップバイステップ送信ガイドMay 09, 2025 am 12:14 AM

PhpisusedForsedingEmailsDueToitsIttegration withServerMailServicesAndExternalSmtpproviders、自動化とMarketingCampaign.1)SetupYourphpenvironment withebeBironment witheBiserverandphp、保証

PHP経由で電子メールを送信する方法:例とコードPHP経由で電子メールを送信する方法:例とコードMay 09, 2025 am 12:13 AM

メールを送信する最良の方法は、PHPMailerライブラリを使用することです。 1)Mail()関数を使用することはシンプルですが信頼できないため、電子メールがスパムを入力するか、配信できない場合があります。 2)PHPMailerは、より良い制御と信頼性を提供し、HTMLメール、添付ファイル、SMTP認証をサポートします。 3)SMTP設定が正しく構成されていることを確認し、暗号化(StartTLSやSSL/TLSなど)を使用してセキュリティを強化します。 4)大量の電子メールについては、メールキューシステムを使用してパフォーマンスを最適化することを検討してください。

高度なPHPメール:カスタムヘッダーと機能高度なPHPメール:カスタムヘッダーと機能May 09, 2025 am 12:13 AM

customedersandaddadvancedfeaturesinphpemailentalitylivainability.1)customederadddetadata fortrackingandcategorization.2)htmLemailsallowStingtintintintintintinteractivity.3)添付物質の添付物質の添付

php&smtpでメールを送信するためのガイドphp&smtpでメールを送信するためのガイドMay 09, 2025 am 12:06 AM

PHPとSMTPを使用してメールを送信することは、PHPMailerライブラリを介して実現できます。 1)PHPMailerをインストールして構成する、2)SMTPサーバーの詳細を設定する、3)電子メールコンテンツを定義し、4)メールを送信してエラーを処理します。この方法を使用して、電子メールの信頼性とセキュリティを確保します。

PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール