1. PHP における Final キーワードの定義を理解する
2. PHP における Final キーワードの役割を理解する
3. PHP での Final キーワードを理解する キーワード使用シナリオ
4. PHP での Final キーワードの具体的な実装をマスターする
これまでの一貫した考え方を踏襲しつつ、3W1H メソッドを通じて学習していきます。理解しましょう
クラスの前に Final を付けると、このクラスは継承できません。
主な機能は 2 点です。
1 . クラスの継承を防ぐ
2. クラスメソッドのオーバーライドを防ぐ
クラス サブクラスがない場合、またはクラスのメソッドをオーバーライドできない場合は、final 実装の使用を検討できます
概要:
1. 最終クラスの定義形式は次のとおりです: 最終クラス クラス名 {}
2. 最終クラスの概念があるのは PHP5 だけであることに特に注意してください。キーワード。この概念は PHP5 以前には存在しませんでした
3。最終メソッドの定義形式は次のとおりです: 最終パブリック (または保護された) 関数のメソッド名 (パラメーター...){}
4クラスが最終クラスとして定義されると、継承することはできません。つまり、サブクラスを持つことはできません
5. メソッドが最終メソッドとして定義されると、サブクラスによってオーバーライドすることはできません
すべての要約は実践に基づいています。したがって、次は、
1、ケース 1:
実践的な目標:
1. 最終クラスの定義形式は次のとおりです: 最終クラス クラス名 {}
<?php //定义“人”类 final class Human{ public function eat(){ echo "Human 中的eat方法被执行了<br/>"; } } $human = new Human(); $human->eat(); ?>
The操作結果:
Human is Executed の Eat メソッド
2. ケース 2:
実用的な目標:
1最終メソッドの定義形式は次のとおりです: Final public (または protected) function メソッド名 (パラメータ...){}
<?php class Human{ final public function eat(){ echo "Human 中的 类型为final的eat方法被执行了<br/>"; } } $human = new Human(); $human->eat(); ?>
演算結果は次のとおりです:
最後の Eat メソッド人間が実行される
3. ケース 3:
実践的な目標:
1. クラスが最終クラスとして定義されると、それを最終クラスとして定義することはできません。継承、つまりサブクラスを持つことはできません
<?php //定义“人”类 final class Human{ public function eat(){ echo "Human 中的 类型为final的eat方法被执行了<br/>"; } } //定义Nba球员类 class NbaPlayer extends Human{ public function eat(){ } } ?>
実行結果は次のとおりです:
致命的エラー: クラス NbaPlayer は D:\E-class\class の最終クラス (Human) から継承できません-code\classing\index.php 14 行目
4. ケース 4:
実際的な目標:
1. 1 回メソッドは最終メソッドとして定義されており、サブクラスによってオーバーライドすることはできません
<?php //定义“人”类 class Human{ final public function eat(){ echo "Human 中的 类型为final的eat方法被执行了<br/>"; } } //定义Nba球员类 class NbaPlayer extends Human{ public function eat(){ echo "NbaPlayer中的eat方法,重写了父类的eat方法<br/>"; } } ?>
実行結果は次のとおりです:
致命的エラー: D:\ の最終メソッド Human::eat() をオーバーライドできませんE-class\class-code\classing\index.php の 14 行目
ここまでで、final について明確に理解できるはずです。学んだことを適用し、次の問題を解決するために学んだ知識を使用します 質問
質問: 長年の経験に基づいて、多くのデータ操作メソッドは実際に再利用できます。1 つのプロジェクトで使用されるだけでなく、これらは多くのプロジェクトで使用でき、プロジェクト内の多くの場所でも使用できます。再利用するため、これらの一般的なメソッドをクラスにカプセル化する予定ですが、このクラスにはサブクラスが必要ないため、サブクラスは必要ありません。内部のメソッドをオーバーライドするにはどうすればよいですか?
アイデア分析:
1. 一般的なデータ操作メソッドを含むクラスを作成します。
2. class は継承になるため、final の役割と組み合わせると、クラスを最終クラスとして定義できます。
3. クラスが最終クラスとして定義されると、内部のメソッドは当然オーバーライドされません。サブクラスがありません。サブクラスで書き直すにはどうすればよいですか?
具体的なコードは次のとおりです:
<?php final class MyDataOpClass{ public function abs(){ //求绝对值 } //产生随机数 public function rand(){ echo "产生随机数方法"; } //获取数组中的最大值 public function getMax($numArr){ } //获取数组中的最小值 public function getMin($numArr){ } //其他方法就此省略 } $mymath = new MyDataOpClass(); $mymath->rand(); ?>
実行結果は次のとおりです:
乱数メソッドを生成する
説明: この例は少し単純ですが、誰もが自分のアイデアの分析に注意を払い、できるだけ正確かつ明確になることを願っています
以上がオブジェクト指向PHPのFinalキーワードの詳しい説明(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。