1. クラスが抽象で変更されている場合、そのクラスは抽象クラスです。メソッドが抽象で変更されている場合、そのメソッドは抽象メソッドです。抽象メソッドにはメソッド body => abstract function cry(); を含めることはできません
2. 抽象クラスはインスタンス化する必要はありませんが、クラスに抽象メソッドが含まれる場合、このクラスはインスタンス化する必要があります。
3. クラスが別の抽象クラスを継承する場合、サブクラスはその抽象クラス内のすべての抽象メソッドを実装する必要があります (それ自体も抽象クラスとして宣言されている場合を除く)。特定のクラスがそれらを使用する必要がある場合、これらのメソッドは特定の状況に従って書き出されます。
echo 'カメラ停止作業'
}
}
//携帯電話クラスを作成します
class Phone は iUsb を実装します{
public function start(){
echo 'Phone Satrt Work'
}
public function stop(){
echo 'Phone Stop Work'
}
}
$c=新しいカメラ();
$c->start();
$p->start();
インターフェースを使用する場合:
1. 仕様を設定し、他のプログラマーに実装させる
2. 複数の並列クラスが異なる方法で実装する必要がある場合:
1. インターフェースをインスタンス化できない。インターフェイス内のすべてのメソッドに本体を含めることはできません。
2. クラスはカンマ (,) で区切って複数のインターフェイスを実装できます。クラス デモは if1,if2,if3{} を実装できます。
3. インターフェイス内には属性を含めることができます。定数には修飾子を含めることはできません (デフォルトは public 修飾子です)
例: インターフェース iUsb{
const A=90;
echo iUsb::A; 4. インターフェース内のメソッドはすべて public である必要があります。 、デフォルトは public です。
5. インターフェースは他のクラスを継承できませんが、複数の他のインターフェースを継承できます
例: インターフェース インターフェース名 extends if1,if2{}
6 、クラスは継承できます。親クラスを継承しながら他のインターフェースを継承します
例: class test extends testbaseimplements test1, test2{}
インターフェースの実装 VS 継承クラス
PHP 継承は単一継承です。つまり、クラスは 1 つの親クラスのみを継承できます。サブクラス関数の拡張に一定の影響を与えます。インターフェイスの実装は、継承されたクラスの補足として見ることができます。継承は階層関係であまり柔軟性がありませんが、インターフェイスの実装は水平関係であり、継承関係を壊すことなく特定の機能を拡張できます。
3. Final
1. クラスを他のクラスに継承させたくない場合は、final
構文を使用することを検討できます:
final class A{} 2. メソッドがサブクラスによってオーバーライドされないようにしたい場合は、メソッドの継承権限がパブリックな変更に依存するため、final を使用して変更することを検討できます。
コードをコピー
コードは次のとおりです:
class A{ final public function getrate($salary){ return $salary*0.08; }
}
class B extens A{
//getrate メソッドここの親クラスは Final を使用しているため、ここでは getrate をオーバーライドできません
//public function getrate($salary){
// return $salary*0.01;
3.属性を変更するため
4. クラス定数 (const)
場合によっては、次のような要件が存在する可能性があります: メンバー変数を変更したくないが、変数の値を固定したい場合、 const 定数を使用できます (const 名はすべて大文字にする必要があり、$ 記号を使用しないと修飾子を定数に追加できません)
構文:
const constant name = constant value; // 初期値を割り当てる必要があります。定数は変更できません
呼び出し:
クラス名::定数名 [この Self::定数名はクラス内で使用できます] またはインターフェイス名::定数名 //インターフェイスでは定数のみ使用でき、変数は使用できません
例: コードをコピーします
コードは次のとおりです:
class A{
const TAX_RATE=0.08; function paytax($salary){ return $salary*self::TAX_RATE; } } $a=new A();
echo $a->paytax(100);
注:
1. 定数は特定のクラスに属します。オブジェクト
http://www.bkjia.com/PHPjc/325503.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/325503.html
技術記事
1. 抽象クラス (abstract) 実際の開発プロセスでは、一部のクラスはインスタンス化する必要がありません。たとえば、以前に学習した一部の親クラスは主にサブクラスに継承され、改善される可能性があります。