ホームページ >php教程 >php手册 >PHP と JAVA のオーバーロードとオーバーライドの概要

PHP と JAVA のオーバーロードとオーバーライドの概要

WBOY
WBOYオリジナル
2016-06-13 12:02:07980ブラウズ

オーバーロード: 同じクラス内で、同じ名前で戻り値やパラメーターの型が異なる関数をオーバーロードと呼びます。
オーバーライド: 同じ名前、同じ戻り値の型、および同じパラメーターを持つ関数はオーバーライドと呼ばれます。これは、サブクラスによる親クラスのメソッドのオーバーライドを指します。
PHP はメソッドと演算子のオーバーロードをサポートしていません。 JAVA は演算子のオーバーロードをサポートしていません (ただし、「 」は実際には演算子のオーバーロードです)。

コードをコピー コードは次のとおりです:


Class Father {
public function fmeth1() {
echo "fmeth1()...
";
}
// public function fmeth1($str1) {
// $ で "fmeth1()" をエコーし​​ます。 str1.. .
";
//}
}
クラス Son extends Father {
public function fmeth1() {
echo "fmeth1() in Son... }
}
$s=new Son();
$s->fmeth1();
?>gt;


where 親クラスの fmeth1 メソッドはオーバーロードできません。

Java のオーバーロードとオーバーライド カバレッジの簡単な説明

Java 言語仕様では、メソッドの特性にはメソッドの名前と番号のみが含まれます。パラメータの型は含まれますが、メソッドの戻り値の型、パラメータの名前、スローされる例外は含まれません。 Java コンパイラはメソッドのオーバーロードをチェックするときに、これらの条件に基づいて 2 つのメソッドがオーバーロードされたメソッドであるかどうかを判断します。ただし、Java コンパイラがメソッドの置換をチェックするとき、戻り値の型と 2 つのメソッド (スーパータイプとサブタイプ) によってスローされる例外が同じかどうかをさらにチェックします。

質問番号: 3

コードをコピー コードは次のとおりです:


class A {
protected int method1(int a, int b) { return 0; }
}


クラス A を拡張するクラスで有効なものはどれですか? (2 つ選択してください)
A. public int method1 (int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. { return 0 ; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; 🎜>310 -035の質問に対して、標準的な答えはA、Cです

Aはオーバーライドで、アクセスがprotected--->publicから拡張されているので正解です。
B と D もオーバーライドです。B は protected--->private から狭くなり、D の戻り値の型が変更されているため、すべて間違っています。
C はオーバーロードです。アクセスの幅と戻り値の型は関係ないので、これは正しいです。
E はオーバーライドですが、静的メソッドはスーパークラスからインスタンスメソッドを隠すことができないため、静的が追加されています。したがって、それは間違っています。
それでは、AC を選択してください。
親クラスを継承し、そのメソッドをオーバーライドするサブクラスは、オーバーライドと呼ばれます - リライト、オーバーライト、オーバーライド
同じ名前でパラメータが異なる複数のメソッドを持つサブクラスは、オーバーロードと呼ばれます - 重い (zhong) ロード、オーバーロード


オーバーロードは次のとおりです:
複数のメソッドが同じ名前を持ちますが、異なるパラメーターが含まれている場合に生成されます
その後、異なるパラメーターを持つ呼び出しは実際には異なるメソッドを呼び出します
また、次のようなものがあることも理解できます。実際には、名前は同じですがパラメータが異なる 2 つのメソッドです!


上書き (OVERWRITE)

は元のメソッドの「可視性」を減らすことができないことに注意してください

異なる戻り値型はメソッド オーバーライドを構成できません

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