ねっとぱんだ-プログラミング勉強ブログ-

Webデザイン、プログラミングの勉強ブログ。

【Java】コンストラクタと継承

Javaでのコンストラクタ

  • クラスと同じ名前のメソッドを作る
  • クラスがインスタンス化された時に同時に実行される。
class Human {
    //変数宣言
	String name;
    //コンストラクタ(クラスと同じ名前にする)
	Human(String name){
        //Humanクラスのnameに引数のnameを代入
		this.name = name;
	}
    //返り値なしなのでvoid
	void sayHi(){
		System.out.println("Hi,"+name);
	}
}

javaのクラスの継承

  • 継承元のクラスを親クラス、superクラスという
class Human {
	String name;
	Human(String name){
		this.name = name;
	}
	void sayHi(){
		System.out.println("Hi,"+name);
	}
}

class AdminHuman extends Human{
	AdminHuman(String name){
		//親クラスのコンストラクタを呼ぶ
		super(name);
	}
	//メソッドのオーバーライド
	@Override
	void sayHi(){
		System.out.println("[Admin]Hi,"+name);
	}
	//新しいメソッドの追加
	void sayHello(){
		System.out.println("Hello,"+name);
	}
}

public class practice{
    public static void main (String[] args){
	    AdminHuman bob = new AdminHuman("bob");
	    bob.sayHello();
	    bob.sayHi();
    }
}

フィールドにアクセス

//親クラスのParamの値を10に変えている。
//親クラスの値は消える
super.Param  = 10;

メソッドにアクセス

//親クラスのMethodに引数numを渡して呼び出している。
super.Method(num);

コンストラクタにアクセス

  • 引数なしのコンストラクタはコンパイル時に自動的に呼び出すように挿入される
  • 引数ありの場合明示的に記述する必要がある。
//引数なしの場合
super();
//引数ありの場合
super(100);

アノテーション annotation

http://www.sejuku.net/blog/22694
注釈、注記

@Override
オーバーライドしていることを明示。
親クラスにないメソド名はエラーになる。
@Deprecated
メソッドの仕様が非推奨であることを明示。
@SuppersWarning();
引数にメッセージを指定して警告を表示にする。
引数の設定http://java-code.jp/162