ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクト指向インターフェース技術事例を詳しく解説

PHPオブジェクト指向インターフェース技術事例を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-06-29 09:50:411154ブラウズ

PHP5 インターフェース技術

PHP は、ほとんどのオブジェクト指向プログラミング言語と同様に、多重継承をサポートしていません。つまり、各クラスは 1 つの親
クラスのみを継承します。この問題を解決するために、PHP はインターフェイスを導入しました。インターフェイスの考え方は、インターフェイスを実装するクラスが実装する必要がある一連のメソッドを指定することです。インターフェイスは特別な
抽象クラス であり、抽象クラスは特別なクラスであるため、インターフェイスも 特別なクラスであると言われているのはなぜですか?抽象クラス内のすべてのメソッドが
抽象メソッドである場合、「インターフェイス」を使用するように宣言メソッドを変更します。つまり、インターフェイス内のすべてのメソッドは
抽象メソッドとして宣言する必要があり、 で宣言することはできません。インターフェイスのすべてのメンバーはパブリック権限を持っています。
そのため、サブクラスを実装する際には、パブリックの許可制限も使用する必要があります。
クラスを宣言するときに使用するキーワードは「class」、インターフェースは特別なクラスであり、
使用されるキーワードは「interface」です。
クラスの定義:クラスクラス名{...}、インターフェースの宣言:インターフェイス インターフェイス名 { … }
コード スニペット

<?php
abstract class Demo{ 
var $test; 
abstract function fun1(); 
abstract function fun2(); 
function fun3(){ 
… . 
} 
} 
$demo=new Demo(); //抽象类为能产生实例对象,所以这样做是错的,实例化对象交给子类 
class Test 
extends
 Demo{ 
function fun1(){ 
… 
} 
function fun2(){ 
… 
} 
} 
$test=new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法 
?>

上の例では、インターフェイス "one" が定義されており、インターフェイス内のすべてのメソッドは抽象メソッドであるため、2 つの抽象メソッド "fun1" と "fun2" を宣言しています。抽象メソッドを宣言する場合、抽象クラスのように「abstract」キーワードを使用する必要はありません。また、このキーワードはデフォルトで追加されているため、インターフェース内の「public」アクセス許可も削除できます。はパブリックであり、インターフェイス内のすべてのメンバーはパブリックである必要があるため、インターフェイス内のメンバーに対して「プライベート」および「保護された」アクセス許可を使用することはできず、パブリックまたはデフォルトを使用する必要があります。さらに、インターフェース内で定数「constant」も宣言しました。インターフェース内では変数をメンバーとして使用できないため、const キーワード宣言を使用する必要があります。

インターフェースは特別な抽象クラスであり、その中のすべてのメソッドは抽象メソッドであるため、インターフェースはインスタンス オブジェクトを生成できません。また、インターフェースは仕様でもあり、すべての抽象メソッドはサブクラスによって実装される必要があります。
"extends" キーワードを使用して、あるインターフェイスに別のインターフェイスを継承させることができます。
コード スニペット

<?php 
//使用”extends”继承另外一个接口 
interface Two extends One{ 
function fun3(); 
function fun4(); 
} 
?>

そして、インターフェイス内のすべての抽象メソッドを実装するインターフェイスのサブクラスを定義する場合、使用されるキーワードは "implements" です。
これは前に述べた「拡張」ではありません;
コード スニペット
<?php 
//使用“implements”这个关键字去实现接口中的抽象方法 
class Three implements One{ 
function fun1(){ 
… . 
} 
function fun2(){ 
… . 
} 
} 
//实现了全部方法,我们去可以使用子类去实例化对象了 
$three=new Three(); 
?>

抽象クラスを使用してインターフェイスにいくつかの抽象メソッドを実装することもできますが、オブジェクトをインスタンス化するには、この抽象
クラスに実装するサブクラスが必要です。すべての抽象メソッドを実装する必要があります。
前に述べたように、クラスは親クラスを 1 つだけ持つことができますが、クラスは複数のインターフェースを実装できます。これは、クラスが複数の標準に準拠する必要があることと同じです。私たちは国の法律を遵守するだけでなく、学校に通っている場合は学校の規則も遵守しなければならないのと同じです。複数のインターフェイスを同時に実装するには、まずクラスを継承してから、インターフェイスを実装する必要があります

<?php 
//使用implements实现多个接口 
class Four implemtns 接口一, 接口二, … .{ 
//必须把所有接口中的方法都要实现才可以实例化对象。 
} 
?>



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

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