はじめに
現在、Rubyと並行してJavaの学習を行っています。
その中で、ポリモーフィズムという言葉がでてきたので学んだことを備忘録として残したいと思います。
ポリモーフィズムとは
日本語では「多様性」という意味です。
1つの名前の複数のメソッドを対象に応じて定義できることなのです。
現状の私の知識では、「オーバーロード」「オーバーライド」の2点を学びましたので、
説明していきます。
オーバーロードとは
同一のクラス内で同一名の複数のメソッドを定義すること。
区別の仕方は、メソッドの引数や、戻り値の型の違いで区別する。
下記のコードですが、同じクラス内に同名のメソッドがありますよね?
しかし、メソッドに引数があるかないかで呼び出すメソッドを区別しています。
class Parent{
//メソッド
void sample(){
System.out.println("parent");
}
// オーバーロードされたメソッド
void sample(String s){
System.out.println("sample:" + s);
}
}
オーバーライド
子クラスに親クラスと同一のメソッドを定義することです。
挙動として、子クラス内に王手同一のメソッドがオーバーライドされたメソッドによって処理が置き換えられる。
//親クラス
class Parent{
//メソッド
void sample(){
System.out.println("parent");
}
// オーバーロードされたメソッド
void sample(String s){
System.out.println("sample:" + s);
}
}
//子クラス
class Child extends Prarent {
//オーバーライドされたメソッド
void method(){
System.out.println("child");
}
}
さいごに
コードを書く時に、何気に行っている作業にも名前がついていて、それを理解することでより理解が深まることを実感しました。
ここまで読んでいただきありがとうございました!