#はじめに
今回はJavaの継承とオーバーライド、オーバーロードについて書いていきたいと思います。
若干、何が何だか分からなくなる時があるんですが、一つずつ見ていけばそんなに難しくはなく、
とても便利なものなので覚えていきたいです!
##継承とは
元からあるクラスの変数やメソッドを引き継ぎ、新しいクラスを作成できるものになります。
継承元のクラスを親クラス(スーパークラス)、継承先のクラスを子クラス(サブクラス)と呼びます。
似たようなクラスをたくさん作り、それを元に細かく処理を分けたい時に便利だったりします。
###継承の仕方
public class Member{
String memberName;
public Member(String memberName){
this.memberName = memberName;
}
public void callMemberName(){
System.out.print(this.memberName);
}
}
例えば上記のような親クラスがあったとします。
これを継承して新たなクラスを作りたい場合は
public class premiumMember extends Member{
public premiumMember(String name){
super(name);
}
}
みたいな感じで書きます。
これでpremiumMemberのインスタンスを作った際に親クラスのメソッドを使用することができます。
継承できるのは1クラスのみで、2クラス以上は継承することができません。
###final
final class PremiumMembere(){
...
}
こんな感じでfinalを前につけると、このクラスは継承元にすることが出来なくなります。
###privateメソッド
class Member (){
...
private void login(){
...
}
}
こんな感じでアクセス修飾子がprivateのメソッドは、継承してもサブクラスは使用することができません。
##オーバーライドとオーバーロード
###オーバーライド
//親クラスのメソッド
public void test(){
System.out.print("Hello");
}
//子クラスのメソッド
@Override
public void test(){
System.out.print("HelloWorld");
}
//親クラスの処理を呼び出したい場合
@Override
public void test(){
super();
System.out.print("World");
}
オーバーライドは既存の親クラスのメソッドを上書きすることです。
super()と書くことで親クラスの処理を呼び出すこともできます。
###オーバーロード
//元のメソッド
public void test(int num, String name){
...
}
//オーバーロード1
public void test(String name, int num){
...
}
//オーバーロード2
public void test(String name){
...
}
オーバーロードは同じメソッド名でシグネチャが異なるものを定義できるものになります。
シグネチャとはメソッド名と引数の組み合わせのことを表します。
オーバーロード1では元のメソッドと引数の順番がことなり、
オーバーロード2では引数の数が違うのでシグネチャが異なり同名のメソッドを作成できます!
引数によって少し動きを変えたい時に使います。
##さいごに
継承どうだったでしょうか!?
簡単なことしか書いてませんが、実際に作成してみてください!
オーバーロードとオーバーライドも便利なのでぜひ覚えてください。
ご覧いただきありがとうございました。