検索
ホームページバックエンド開発PHPチュートリアルPHP のクラス、オブジェクト、抽象クラス、インターフェイスを 1 つの記事で理解する

PHP のクラス、オブジェクト、抽象クラス、インターフェイスを 1 つの記事で理解する

クラスとオブジェクト: 抽象クラス、インターフェイス

抽象クラスとインターフェイス: 抽象クラス (Abstract Class) とインターフェイス (Interface) は、インスタンス化できない特殊な種類です。

抽象クラス:

抽象クラスの抽象メソッドは、特定の実装を持たない空のメソッドです。抽象クラスを使用してサブクラスの機能定義を設定できるため、抽象クラスを使用すると、開発者は特定の親クラス

# からのみ継承し、継承されたサブクラス固有で必要なものを完成させることができます。機能。

抽象クラスを定義するための構文形式は次のとおりです。

abstract class 类名称{
  //抽象类的成员变量列表
  abstract function 成员方法1([参数1],[参数2],……);
  abstract function 成员方法2([参数1],[参数2],……);
  //其他代码
}

抽象クラスは通常のクラスと似ており、次の機能も備えています。メンバー属性とメンバー メソッドの違いは、抽象クラスをインスタンス化できないことです。

以下は、単純で完全な抽象クラスを定義します:

abstract class MyClass{ //定义抽象类
  abstract protected function myFunction($arg); //定义抽象方法
}

PS: 抽象クラスの定義には、キーワード abstract で変更され、何も変更されないものが少なくとも 1 つ含まれている必要があります。実装抽象メソッド。

抽象クラスの実装手順:

抽象クラスでは、抽象メソッドを定義するだけでなく、通常のクラスと同様に、指定された機能を実現する一部のメンバメソッドを定義することができます。継承 クラスを抽象化した後、指定された関数を完了できるこれらのメンバー メソッドを

直接参照できます。

class 子类名称 extends 抽象类名称{
  //子类的成员变量列表
  
  function 抽象方法名称([参数1],[参数2],……){
      //抽象方法的具体实现
  }
  //其他代码
 }

PS: クラスが抽象クラスを継承する場合、そのクラスには抽象クラスで定義されたすべてのメソッドが含まれている必要があります。そうでない場合は、実行時にエラーが発生します。

以下は抽象クラスの実装例です:

abstract class Study{
  abstract function printStudy($name,$lang); //定义一个抽象方法
}
 
class OneStudy extends Study { //定义子类继承于父类
  function printStudy($name,$lang){ //抽象方法的具体实现
      echo $name."正在整理".$lang."……";
  }
 }
 
class TwoStudy extends Study {
  function printStudy($name,$lang){
      echo $name."正在整理".$lang."……";
    }
}
  $first=new OneStudy();
  $first->printStudy("大兵","PHP基础知识");
  echo "";
  $second=new TwoStudy();
  $second->printStudy("小兵","SEO基础知识");

このプログラムの実行結果は次のとおりです:

兵士はPHP の基礎知識を整理しています...…

Xiaobing は SEO の基礎知識を整理しています...

インターフェースを定義します:

インターフェースは、いくつかの空のメンバー メソッドまたはいくつかのクラス定数のみを含むメンバー メソッド宣言のコレクションです。これらの空のメンバー メソッドは、インターフェースを実装するクラスによって実装されます。

インターフェイスを定義するには、キーワード インターフェイスを使用する必要があります。構文形式は次のとおりです:

interface 接口名称{
  //类常量列表
  function 成员方法1([参数1],[参数2],……);
  function 成员方法2([参数1],[参数2],……);
  //其他代码
}

インターフェイスはインスタンス化できないため、インターフェイスには構築メソッドや構造化メソッドはありません。 . のセットを与えるだけでよい 実装するメンバメソッドの宣言だけで十分です。

以下はシンプルで完全なインターフェイスを定義します:

interface class MyClass{ //定义接口
  public function myFunction($arg); //定义方法
}

インターフェイスの実装プロセス:

クラス、インターフェースも継承できます。インターフェイスは複数のインターフェイスから継承できますが、インターフェイスはクラスから継承できません。インターフェイスを実装するには、キーワードimplementsを使用します。

クラスを使用してインターフェイスを実装する場合、インターフェイスに定義されている少なくともすべてのメソッドが含まれている必要があります。そうでない場合は、実行時にエラーが発生します。

以下はインターフェイスの実装例です:

interface IName{ //定义接口IName
  function setName($name);
  function getName();
  }
  interface IAge{ //定义接口IAge
  function setAge($age);
  function getAge();
  }
  class DaBing implements IName,IAge{ //定义实现接口的类
  private $name;
  private $age;
  function setName($name){
  $this->name=$name;
  }
  function getName(){
  echo "姓名:".$this->name." ";
  }
  function setAge($age){
  $this->age=$age;
  }
  function getAge(){
  echo "年龄:".$this->age;
  }
  }
  $obj=new DaBing();
  $obj->setName("大兵");
  $obj->getName();
  $obj->setAge(25);
  $obj->getAge();

このプログラムの実行結果は次のとおりです:

名前: 兵士 年齢: 25

概要クラスとインターフェイスの違い:

インターフェイスの使用は、キーワードimplementsを通じて実現されます。抽象クラスの操作は、キーワード extends を継承することで実装されます。

インターフェイスにはデータ メンバーがありませんが、抽象クラスにはデータ メンバーがあり、抽象クラスはデータ クロージャを実現できます。

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

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

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

インターフェイスにはメンバー メソッドの実装コードを含めることはできませんが、抽象クラスにはメンバー メソッドの実装コードを含めることはできます。

PS: アプリケーションで、特定のクラスにさらに動作を追加する必要がある場合は、これらの動作を組み合わせるインターフェイスを定義できます。特定のデータと動作を再利用する必要がある場合は、これらの変数と関数をカプセル化する抽象クラスを定義する必要があります。


以上がPHP のクラス、オブジェクト、抽象クラス、インターフェイスを 1 つの記事で理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はwww.liqingbo.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

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

AI Hentai Generator

AI Hentai Generator

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

ホットツール

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 プラットフォームで実行できます。

メモ帳++7.3.1

メモ帳++7.3.1

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

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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