ホームページ >Java >&#&チュートリアル >Java におけるメソッド カバレッジとメソッド オーバーロードの比較入門

Java におけるメソッド カバレッジとメソッド オーバーロードの比較入門

不言
不言転載
2019-02-11 11:13:312420ブラウズ

この記事では、Java のメソッド カバレッジとメソッドのオーバーロードについて比較紹介します。必要な方は参考にしていただければ幸いです。

#メソッド シグネチャ

メソッド シグネチャは、メソッドのパラメータのタイプ、順序、番号を指します。メソッド名は含まれません。 ##オーバーロード

オーバーロードは次の条件を満たす必要があります

メソッド名が同じである

パラメータの型、数、順序メソッドは少なくとも異なりますメソッドの戻り値の型は異なる場合があります

#メソッドのアクセス修飾子は異なる場合があります

##Override

名前、戻り値の型、およびパラメーターのシグネチャが親クラスのメソッドの名前、戻り値の型、およびパラメーターのシグネチャと正確に一致するサブクラスのメソッドで定義されている場合、サブクラスは親クラスのメソッドをオーバーライドします。

オーバーライドは次の条件を満たす必要があります。

サブクラス メソッドの名前、パラメーター シグネチャ、および戻り値の型は、親クラス メソッドと一致している必要があります。

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


そのような制限がない場合、Java 言語のポリモーフィズム機構と競合します。

  //创建父类型的变量,引用子类的实例
  Parent parent = new Child();
  //调用的是子类实例的方法,如果子类覆盖这个方法时,缩小了访问权限,可能会造成无法访问到子类实例的这个方法
  parent.method();

サブクラス メソッドは、親クラス メソッドより多くの例外をスローできません。サブクラス メソッドによってスローされる例外は、親クラス メソッドによってスローされる例外と同じである必要があります。そうでない場合、親クラス メソッドによってスローされる例外クラスは親クラスです。メソッドは、クラスのサブクラスで例外をスローします。

メソッドのオーバーライドは、サブクラスと親クラス (直接の親クラスと間接的な親クラスを含む) の間でのみ存在します。メソッドは、ロードされた同じクラス内でのみオーバーライドできます。オーバーライドできません。

親クラスの静的メソッドは、サブクラスによって非静的メソッドとしてオーバーライドできません。

親クラスの非静的メソッドは、サブクラスによってオーバーライドできません。サブクラスによる静的メソッド

親クラスのプライベート メソッドはサブクラスでオーバーライドできません

#親クラスの非抽象メソッドはサブクラスで抽象メソッドとしてオーバーライドできます

##類似点と相違点

1. 類似点

メソッド名は一貫している必要があります

#2. 相違点

メソッドのオーバーライドではパラメーターの署名が一貫している必要があります。

オーバーライドには一貫性のある戻り値の型が必要です。または、サブクラス メソッドの戻り値の型が親クラス メソッドより小さい場合、オーバーロードはこれに制限を課しません。は、サブクラスが親クラスのメソッドをオーバーライドするためにのみ使用でき、オーバーロードは同じクラスのすべてのメソッド (親クラスから継承されたメソッドを含む) に使用されます。

アクセス許可をオーバーライドするには要件があります。

#親クラスのメソッドは、サブクラスによって 1 回だけオーバーライドできます。また、メソッドは、それが配置されているクラス内で複数回オーバーロードできます。 .

以上がJava におけるメソッド カバレッジとメソッド オーバーロードの比較入門の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。