検索
ホームページバックエンド開発PHPの問題PHPにおけるクラス継承とインターフェース継承の違いは何ですか

PHP では、クラス継承とインターフェイス継承の違いは次のとおりです。PHP クラスは多重継承をサポートしません。つまり、サブクラスは 1 つの親クラスのみを継承できますが、複数レベルの継承をサポートしますが、インターフェイスは多重継承をサポートします。つまり、インターフェイスは 1 つ以上のインターフェイスを継承できます。

PHPにおけるクラス継承とインターフェース継承の違いは何ですか

この記事の動作環境: Windows 10 システム、PHP バージョン 7.1、Dell G3 コンピューター。

phpにおけるクラス継承とインターフェイス継承の違いは何ですか

PHPクラス継承:

1. PHPクラスは多重継承をサポートしません。つまり、サブクラスは多重継承のみをサポートします。親クラスですが、マルチレベルの継承をサポートします

例:

class frist{
  public function __construct(){
    echo "我是第一个类。","<br>";
  }
  public function printer(){
    echo "frist","<br>";
  }
}
class seconds extends frist{}
class third extends seconds{}
$obj = new third();
$obj->printer();

結果: これは最初のクラスです。 frist の 2 番目と 3 番目のクラスは、printer() メソッドをオーバーライドしません。printer() メソッドは、3 番目のクラスがインスタンス化された後に呼び出すことができます。

2. 継承権限の問題

(1) 親クラスのプライベートメソッドは継承できず、親クラスはプライベート化されます

(2) のプロテクトされたメソッド親クラスは継承できますが、インスタンス化されたオブジェクトから呼び出すことはできません。呼び出すと、「保護されたメソッド frist::printer() を呼び出します」というエラー メッセージが表示されます。親クラスはこのメソッドを保護モードにします。

(3) 親クラスのパブリック メソッドは継承でき、インスタンス化されたオブジェクトによって呼び出すことができ、パブリック メソッドです。

(4) サブクラスは親クラスのパブリック メソッドまたは保護されたメソッドをオーバーライドできます。 , ただし、メソッドを再プライベートにすることはできません。同じ名前を持つ場合、このクラスでのみ再宣言できます

3. インターフェイス クラスの継承

(1) インターフェイスは多重継承をサポートし、インターフェイス クラスのメソッドを実装する必要はありません。例:

interface frist{
  public function ex1();
}
interface seconds{
  public function ex2();
}
interface third extends frist,seconds{
  public function ex3();
}
class fourth implements third{
  public function ex1(){}
  public function ex2(){}
  public function ex3(){}
}
class fourth implements frist,seconds{
  public function ex1(){}
  public function ex2(){}
}

(2) インターフェイス クラスのメソッド権限は public、デフォルトは public

(3) インターフェイス クラスのメソッド権限は public です。インターフェイスはインターフェイスのすべてのメソッドを実装する必要があることを指します。そうでない場合は、次のようなエラーが報告されます。「クラス e には 1 つの抽象メソッドが含まれているため、抽象メソッドを宣言するか、残りのメソッドを実装する必要があります。」つまり、クラス e には 1 つの抽象メソッドが含まれます。したがって、残りのメソッドは抽象的に宣言するか実装する必要があります。

4. 抽象クラス: クラス内に抽象メソッドがある限り、このクラスは抽象クラスとして定義する必要があります

(1) 抽象クラスは継承し、抽象クラスはオーバーライドできません親クラスのメソッド。

(2) 抽象クラスの継承は、親クラスのメソッドを拡張したものです。

(3) すべての抽象メソッドは、インスタンス化する前に、継承された派生クラスでオーバーロードする必要があります。

(4) 抽象クラスによって実装された通常のディストリビューションは、非抽象サブクラスで直接呼び出すことができます。

5. インターフェイスと抽象クラスの類似点と相違点 (抽象クラスとインターフェイスの違いを参照)

(1) インターフェイスの使用は、キーワードのimplements を通じて実現され、abstract の場合はクラス クラス継承のキーワード exotends を使用して操作を実装します。

(2) インターフェイスにはデータ メンバーはありませんが、抽象クラスにはデータ メンバーがあり、抽象クラスはデータのカプセル化を実装できます。

(3) インターフェイスにはコンストラクターはありませんが、抽象クラスにはコンストラクターを含めることができます。

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

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

(6) 類似点: function getName(); など、関数本体には何も記述できません。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPにおけるクラス継承とインターフェース継承の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

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

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

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