Javaにおけるオーバーロードとオーバーライドの違いは何ですか?

Javaでは、オーバーライディング(Overriding)とオーバーローディング(Overloading)は、子クラスが親クラス内のメソッドを再実装するプロセスです。それらの違いは次のとおりです。

  1. オーバーライドとは、親クラスのメソッドと同じ名前、引数リスト、戻り値の型を持つメソッドをサブクラスが定義すること、オーバーロードとは、親クラスのメソッドと同じ名前を持つが、引数リストが異なるメソッドをサブクラスが定義すること。
  2. 継承(サブクラスがスーパークラスのメソッドを上書きし、スーパークラスのメソッドを継承しつつ一部のメソッドを再実装すること)、オーバライド(サブクラスがスーパークラスのメソッドを拡張し、引数リストは異なるものの機能は継承すること)
  3. 调用:覆盖的方法在子类中会隐藏父类的同名方法,当调用方法时,会优先调用子类的方法;重写的方法在子类中会完全替换父类的同名方法,无论调用时使用哪个类,都会调用对应类的方法。
  4. 编译时多态性:覆盖是一种运行时多态性,即子类和父类之间的动态绑定;重写是一种编译时多态性,即根据调用方法时使用的类进行静态绑定。

要するに、オーバーライドは親クラスのメソッドをサブクラスが自分たちなりに改善、変化させて表現するもので、オーバーロードは親クラスのメソッドをサブクラスがそのまま実装する方法です。

bannerAds