Javaのポリモーフィズム:メソッドをオーバーロードまたはオーバーライドする方法

Javaのポリモーフィズム:メソッドをオーバーロードまたはオーバーライドする方法

メソッドのオーバーロードとオーバーライドは、Javaがポリモーフィズムを示す2つの方法です。ポリモーフィズムは、ギリシャ語の2つの単語の組み合わせに由来します。「poly」は多くを意味し、「morph」はフォームを意味します。したがって、ポリモーフィズムにより、メソッドはさまざまな形をとることができます。





このガイドに従って、Javaでメソッドをオーバーロードまたはオーバーライドする方法を学習してください。





メソッドのオーバーロードとは何ですか?

「メソッドのオーバーロード」とは、同じ名前のクラスで異なるメソッドを定義することを指します。メソッドには異なる署名が必要です。メソッドシグネチャは、メソッドの名前とパラメータリストの組み合わせです。返品タイプは含まれていません。





コンパイラーは、タイプ、パラメーターの数、およびパラメーターが配置される順序をチェックすることにより、使用するメソッドを認識します。

関連している: Javaプログラミング言語での継承の調査



メソッドのオーバーロードは、コンパイル時のポリモーフィズムを示しています。コンパイル時のポリモーフィズムとは、Javaコンパイラが実行時にオブジェクトをその機能にバインドすることを意味します。コンパイラは、これを実現するためにメソッドシグネチャをチェックします。

このタイプの多型は、静的または早期バインディングとしても知られています。





以下のメソッドオーバーロードの例を参照してください。

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

出力:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

上記のコードは、さまざまなタイプのキューブを取得する方法を示しています( intダブル浮く )同じ方法を使用します。

一般に、メソッドのオーバーロードは、異なるパラメータータイプで同様のメソッドを定義するために使用されます。

メソッドのオーバーライドとは何ですか?

これは、サブクラスのメソッドの異なる実装を指します。メソッドは、親クラスですでに定義されている必要があります。

オーバーライドするメソッド(つまり、サブクラス内のメソッド)は、スーパークラス内のメソッドと同じメソッドシグネチャを持っている必要があります。オーバーライドするメソッドの戻り型は、スーパークラスのものと同じでもサブタイプでもかまいません。

オーバーライドは通常、サブクラスにオブジェクトの動作の特定の実装を含めるために使用されます。

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

出力:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

上記の例は、この方法がどのように行われるかを示しています。 メッセージ() サブクラスでオーバーライドされます 節約FixedDeposit 。普通預金口座をお持ちの銀行口座と固定預金口座をお持ちの銀行口座の方には、異なるメッセージが表示されます。

関連している: Javaでの文字列の使用について知っておくべきこと

また、メソッドのオーバーライドは、実行時のポリモーフィズムまたは動的なメソッドディスパッチを示していることにも注意してください。これは、呼び出されるメソッドがコンパイル時ではなく実行時に解決されることを意味します。

メソッドがオーバーライドされないようにするには、キーワードを使用します 最後の

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

サブクラスがそれをオーバーライドしようとすると、コンパイルエラーが発生します。

理想的には、コンストラクター内で呼び出されるすべてのメソッドは 最後の 。これは、サブクラスによって引き起こされる可能性のある意図しない変更を回避するためです。

場合によっては、オーバーライドするメソッド内でオーバーライドされるメソッドにアクセスする必要があります。あなたはキーワードを使うことができます 素晴らしい ドット演算子が続きます( )およびそのような場合のメソッド名。

スーパークラスを検討してください 動物

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

以下は、と呼ばれるサブクラスです 、それはオーバーライドします 動く()

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

出力:

テレビ番組で見られる服を見つける方法
I can swim.
I can move.

メソッドをオーバーライドするときは、使用されるアクセス修飾子にも注意する必要があります。サブクラスのモディファイアは、基本クラスと同じレベルまたはそれ以上の可視性を持っている必要があります。たとえば、基本クラスのメソッドが次のように定義されている場合 保護された 、次に、オーバーライドするメソッドは次のいずれかになります。 保護された また 公衆

ポリモーフィズムを持つ単純なコード

コードを単純化するには、メソッドのオーバーライドとオーバーロードが重要であり、単純なコードを使用することをお勧めします。

どうして?グランドセントラル駅よりも多くのインとアウトがある複雑なコードベースを想像してみてください。今、壊滅的なバグがあなたの目の前であなたのハードワークを破壊し始めると想像してください。感染源を特定する必要があり、それを迅速に行う必要があります。

幸運を祈ります、あなたはあなたのコードを単純化しませんでした...今あなたは暗号化の本当の教訓を得ようとしています。効果的なデータ構造を採用し、コードを短縮するためにできることを実行すること(DRYを念頭に置くなど)は、このような状況に対する最善の防御策です。

次のJava学習リストは、配列を操作する必要があります。これらは、データポイントのバッチを格納するために使用される重要なデータ構造です。

共有 共有 つぶやき Eメール Javaで配列の操作を作成および実行する方法

Javaを学ぶ?配列でデータを簡単に処理できます。

次を読む
関連トピック
  • プログラミング
  • Java
  • コーディングチュートリアル
著者について ジェローム・デビッドソン(22の記事が公開されました)

ジェロームはMakeUseOfのスタッフライターです。彼はプログラミングとLinuxに関する記事をカバーしています。彼は暗号愛好家でもあり、常に暗号業界を監視しています。

ジェローム・デビッドソンのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください