Java での書き換えとオーバーロードの概念を区別する方法

王林
リリース: 2020-07-04 16:48:29
転載
2699 人が閲覧しました

Java での書き換えとオーバーロードの概念を区別する方法

オーバーロード

(推奨学習: java エントリー プログラム)

メソッド オーバーロードは手段ですクラスがさまざまな種類のデータを統一された方法で処理できるようにします。パラメータの数や種類が異なる、同じ名前の関数が複数同時に存在します。オーバーロードは、クラス内のポリモーフィズムの現れで​​す。

Java におけるメソッドのオーバーロードとは、クラス内に複数のメソッドを作成できることを意味します。それらのメソッドは同じ名前ですが、異なるパラメータと異なる定義を持ちます。

メソッドを呼び出すとき、メソッドに渡される特定の数値とパラメーターの型を使用して、使用するメソッドが決定されます。これがポリモーフィズムです。

オーバーロードする場合、メソッド名は同じである必要がありますが、パラメーターの型と数は異なり、戻り値の型は同じでも異なっていても構いません。戻り値の型は、オーバーロードされた関数を区別するための基準として使用できません。

親クラスのメソッドがデフォルトで変更されると、同じパッケージ内のサブクラスによってのみオーバーライドできます。同じパッケージ内にない場合はオーバーライドできません。

親クラスのメソッドがプロトタイプ化されると、同じパッケージ内のそのサブクラスによってオーバーライドされるだけでなく、別のパッケージ内のサブクラスによってもオーバーライドされる可能性があります。

オーバーロードされたルール

  • には異なるパラメーター リストが必要です。

  • は異なる戻り値の型を持つことができます。パラメータリストが異なる限り;

  • は異なるアクセス修飾子を持つことができます;

  • は異なる例外をスローすることができます ;

メソッドをオーバーライドするためのルール

  • パラメータ リストはオーバーライドされたメソッドとまったく同じである必要があります。そうでない場合は、リライトとは言えませんが、過負荷。

  • 戻り値の型は、オーバーライドされたメソッドの戻り値の型と常に同じである必要があります。そうでない場合は、オーバーライドと呼ばれることはできず、オーバーロードと呼ばれます。

  • アクセス修飾子の制限は、オーバーライドされたメソッドのアクセス修飾子より大きくする必要があります (パブリック>プロテクト>デフォルト>プライベート)

  • 重いメソッドは、新しいチェック例外、またはオーバーライドされたメソッド宣言よりも広範囲のチェック例外をスローしてはなりません。例: 親クラスのメソッドはチェック例外 IOException を宣言します。このメソッドをオーバーライドする場合、例外をスローすることはできません。スローできるのは IOException のサブクラスの例外のみであり、チェックされていない例外はスローできます。

オーバーロードとリライト (上書き) の特徴

(ビデオ チュートリアルの推奨: java ビデオ チュートリアル)

オーバーロード機能

1. オーバーロードを使用する場合、使用できるのは異なるパラメーター スタイルのみです。たとえば、異なるパラメータの型、異なるパラメータの数、異なるパラメータの順序 (もちろん、同じメソッド内の複数のパラメータの型は異なる必要があります。たとえば、fun(int, float) にすることはできますが、fun(int) にすることはできません。 , int ));

2. アクセス許可、戻り値の型、スローされた例外によってオーバーロードすることはできません;

3. 例外のタイプとメソッドの数はオーバーロードに影響しません;

4. 継承の場合、親クラスで特権アクセスを持つメソッドをサブクラスでオーバーロードすることはできません。定義しても新しいメソッドが定義されるだけで、オーバーロードの効果は得られません。

#オーバーライド機能

1. オーバーライド効果を実現するには、オーバーライドされたメソッドのフラグがオーバーライドされたメソッドのフラグと完全に一致する必要があります。

2 . オーバーライドされたメソッドの戻り値は、オーバーライドされたメソッドの戻り値と一致している必要があります;

3. オーバーライドされたメソッドによってスローされた例外は、オーバーライドされたメソッドまたはそのサブクラスによってスローされた例外と一致している必要があります;

4. オーバーライドされたメソッドをプライベートにすることはできません。プライベートでない場合は、そのサブクラスで新しいメソッドのみが定義され、上書きされません。

概要

overload (オーバーロード)

パラメータの型、数、順序の少なくとも 1 つが異なります。

戻り値が異なるだけのメソッド名をオーバーロードすることはできません。

親クラス、サブクラス、および類似のクラスに存在します。

override (書き換え)

メソッド名、パラメータ、戻り値は同じです。

サブクラス メソッドは、親クラス メソッドのアクセス権を減らすことはできません。

サブクラス メソッドは、親クラス メソッドより多くの例外をスローできません (ただし、サブクラス メソッドは例外をスローできない場合があります)。

親クラスと子クラスの間に存在します。

メソッドはfinalとして定義されており、オーバーライドできません。

以上がJava での書き換えとオーバーロードの概念を区別する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート