logo

Java でのメソッドのオーバーライド

  1. メソッドをオーバーライドせずに問題を理解する
  2. 静的メソッドをオーバーライドできますか
  3. メソッドのオーバーロードとメソッドのオーバーライド

サブクラス (子クラス) が親クラスで宣言されているのと同じメソッドを持つ場合、それは次のように呼ばれます。 Javaでのメソッドのオーバーライド

つまり、親クラスの 1 つによって宣言されたメソッドの特定の実装をサブクラスが提供する場合、それはメソッドのオーバーライドと呼ばれます。

Java メソッドのオーバーライドの使用法

  • メソッドのオーバーライドは、スーパークラスによってすでに提供されているメソッドの特定の実装を提供するために使用されます。
  • メソッドのオーバーライドは実行時のポリモーフィズムに使用されます

Java メソッドのオーバーライドのルール

  1. メソッドは親クラスと同じ名前を持つ必要があります
  2. メソッドには、親クラスと同じパラメータが必要です。
  3. IS-A 関係 (継承) が必要です。
メソッドのオーバーライドに関する Java ルール

メソッドをオーバーライドせずに問題を理解する

メソッドのオーバーライドを使用しない場合にプログラムで直面する可能性がある問題を理解してみましょう。

 //Java Program to demonstrate why we need method overriding //Here, we are calling the method of parent class with child //class object. //Creating a parent class class Vehicle{ void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike extends Vehicle{ public static void main(String args[]){ //creating an instance of child class Bike obj = new Bike(); //calling the method with child class instance obj.run(); } } 
今すぐテストしてください

出力:

Javaサンプルプログラム
 Vehicle is running 

問題は、サブクラスで run() メソッドの特定の実装を提供する必要があるため、メソッドのオーバーライドを使用することです。


メソッドのオーバーライドの例

この例では、親クラスで定義されているようにサブクラスで run メソッドを定義しましたが、これには特定の実装がいくつかあります。メソッドの名前とパラメータは同じであり、クラス間には IS-A 関係があるため、メソッドのオーバーライドが行われます。

 //Java Program to illustrate the use of Java Method Overriding //Creating a parent class. class Vehicle{ //defining a method void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike2 extends Vehicle{ //defining the same method as in the parent class void run(){System.out.println('Bike is running safely');} public static void main(String args[]){ Bike2 obj = new Bike2();//creating object obj.run();//calling method } } 
今すぐテストしてください

出力:

 Bike is running safely 

Java メソッドのオーバーライドの実例

Bank が金利を取得する機能を提供するクラスであるシナリオを考えてみましょう。ただし、金利は銀行によって異なります。たとえば、SBI、ICICI、および AXIS 銀行は、8%、7%、9% の金利を提供できます。

銀行の Java メソッドオーバーライドの例

Java メソッドのオーバーライドは主に、次のページで学習するランタイム ポリモーフィズムで使用されます。

 //Java Program to demonstrate the real scenario of Java Method Overriding //where three classes are overriding the method of a parent class. //Creating a parent class. class Bank{ int getRateOfInterest(){return 0;} } //Creating child classes. class SBI extends Bank{ int getRateOfInterest(){return 8;} } class ICICI extends Bank{ int getRateOfInterest(){return 7;} } class AXIS extends Bank{ int getRateOfInterest(){return 9;} } //Test class to create objects and call the methods class Test2{ public static void main(String args[]){ SBI s=new SBI(); ICICI i=new ICICI(); AXIS a=new AXIS(); System.out.println('SBI Rate of Interest: '+s.getRateOfInterest()); System.out.println('ICICI Rate of Interest: '+i.getRateOfInterest()); System.out.println('AXIS Rate of Interest: '+a.getRateOfInterest()); } } 
今すぐテストしてください
 Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9 

静的メソッドをオーバーライドできますか?

いいえ、静的メソッドをオーバーライドすることはできません。それは実行時ポリモーフィズムによって証明できるので、後で学習します。


なぜ静的メソッドをオーバーライドできないのでしょうか?

これは、静的メソッドがクラスにバインドされているのに対し、インスタンス メソッドはオブジェクトにバインドされているためです。静的はクラス領域に属し、インスタンスはヒープ領域に属します。


Javaのメインメソッドをオーバーライドできますか?

いいえ、main は静的メソッドであるためです。

DF ロック

Javaにおけるメソッドのオーバーロードとメソッドのオーバーライドの違い

メソッドのオーバーロードとオーバーライドの違いについては、ここをクリックしてください


メソッドのオーバーライドに関するその他のトピック (初心者向けではありません)

アクセス修飾子によるメソッドのオーバーライド

アクセス修飾子を使用したメソッドのオーバーライドの概念を見てみましょう。

メソッドのオーバーライドによる例外処理

例外処理によるメソッドのオーバーライドの概念を見てみましょう。