ホームページ >バックエンド開発 >PHPチュートリアル >allowoverride PHP および JAVA のオーバーロードとオーバーライドの概要

allowoverride PHP および JAVA のオーバーロードとオーバーライドの概要

WBOY
WBOYオリジナル
2016-07-29 08:48:091144ブラウズ

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

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


Class Father {
public function fmeth1() {
echo "fmeth1()...
"
}
//public function fmeth1($str1) {
// echo "fmeth1() with $str1...
"
//}
}
Class Son extends Father {
public function fmeth1() {
echo "fmeth1 () in Son...
"
}
}
$s->fmeth1()> の 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;
C . private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; } 0; }

310-035 の問題の標準的な答えは A と C です
A はオーバーライドであり、アクセスが protected --->public から拡張されているため、正解です。
B と D もオーバーライドです。B は protected --->private から狭くなり、D の戻り値の型が変更されたため、すべて間違っています。
C はオーバーロードであり、アクセスの幅と戻り値の型は関係ないので、これは正しいです。
E はオーバーライドですが、静的メソッドはスーパークラスからインスタンスメソッドを隠すことができないため、静的が追加されています。 したがって、それは間違っています。
それではACを選択してください。
親クラスを継承し、親クラスのメソッドをオーバーライドするサブクラスは、オーバーライド、オーバーライド、オーバーライドと呼ばれます。
同じ名前でパラメータが異なる複数のメソッドを持つサブクラスは、オーバーロード、重(zhong)ロード、と呼ばれます。 overload
overload それは:
複数のメソッドが同じ名前を持ち、異なるパラメーターを含む場合に発生します
異なるパラメーターを呼び出すと、実際には異なるメソッドが呼び出されます
実際には同じ名前で異なるパラメーターを持つ 2 つのメソッドがあることも理解できます
上書きします。 (OVERWRITE) 注意
元のメソッドの可視性を減らすことはできません
異なる戻り値の型はメソッドのオーバーライドを構成することはできません
オーバーロード (OVERLOAD) 注意
オーバーロードを構成できるのは、異なるパラメーターのみです
上記では、allowoverride の内容を含め、PHP と JAVA のallowoverride オーバーロードとオーバーライドを紹介しています。これが、PHP チュートリアルに興味のある友人に役立つことを願っています。


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