PHP オブジェクト指向の多重継承とインターフェイスの使用法

巴扎黑
リリース: 2023-03-07 12:42:01
オリジナル
3224 人が閲覧しました

インターフェースを紹介する前に、なぜそのインターフェースを使用する必要があるのか​​を知る必要があります。ここでインターフェースを紹介します。

では、なぜインターフェースを使用するのでしょうか?

コンピューター言語の中で、多重継承をサポートしているオブジェクト指向言語はほんのわずかです。私たちが学習している PHP 言語は、ほとんどの言語と同様、多重継承をサポートしていません。率直に言うと、親クラスは複数のサブクラスを持つことができますが、サブクラスは親クラスを 1 つだけ持つことができます。

多重継承とは何ですか?

多重継承は、2つ以上の親クラスを継承するサブクラスです。これは、PHPでは許可されていない多重継承です。 PHP で多重継承を実装したい場合は、インターフェイスを使用する必要があります。インターフェイスは、多重継承に対する解決策と見なすことができます。PHP のオブジェクト指向インターフェイスは、他のオブジェクト指向言語インターフェイスと似ています。

インターフェイス クラスの構文の概要:

インターフェイス クラスは、interface キーワードを通じて宣言され、クラスには未実装のメソッドと一部のメンバー変数のみを含めることができます。形式は次のとおりです:

interface InterfaceName{
function interfaceName1(){
}
function interfaceName2(){
}
}
ログイン後にコピー

注:

Do public は使用しないでください。メソッドの場合は、他のキーワードを使用してインターフェイス内のクラス メンバーを変更できます。キーワードを記述しなくても問題ありません。これは、インターフェイス クラス自体のプロパティによって決まります。

サブクラスの構文の紹介:

サブクラスは、implements キーワードを使用してインターフェースを実装します。複数のインターフェースを実装する場合は、各インターフェースをカンマで区切る必要があります。また、インターフェイス クラス内の未実装のメソッドはすべてサブクラスに実装する必要があります。そうしないと、致命的なエラーが発生します。

サブクラス定義形式:

class SubClass implements InterfaceName1, InterfaceName2{
function InterfaceName1(){
}
function InterfaceName2(){
}
}
ログイン後にコピー

インターフェースクラスインスタンスについて:

<?php
header("content-type:text/html;charset=utf-8");
interface A{                                //创建接口
function a();
}
interface B{
function b();
}
class Php implements A{
function a()
{
echo &#39;php中文网&#39;;
}
}
class Html implements A , B{
function a()
{
echo &#39;PHP中文网是免费网站&#39;;
}
function b()
{
echo &#39;PHP中文网网址是m.sbmmt.com&#39;;
}
}
$php = new Php();
$html = new html();
$php ->a();
echo &#39;<br/>&#39;;
$html ->a();
$html ->b();
ログイン後にコピー

インターフェースクラス内のすべての未実装メソッドは、サブクラスに完全に実装する必要があります。そうしないと、致命的なエラーが発生します。いくつかのクラスをインターフェイスに自分で実装して、致命的なエラーが発生するかどうかを確認してください。

以上がPHP オブジェクト指向の多重継承とインターフェイスの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート