ネコを作る

概要

猫を表すクラスとそれを継承するクラスを作成し動作を確認する。継承の基本を学ぶ。

class MyAnimals {
	private int age;

	public void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return age;
	}
}

class MyCat extends MyAnimals {
	private String name;

	MyCat() {

	}

	MyCat(String name, int age) {
		this.name = name;
		super.setAge(age);
		System.out.println("この猫の名前を[" + this.name + "]年齢を[" + super.getAge() + "]才で生成、初期化しました");
	}

	public void incrementAge() {
		int temp;
		temp = super.getAge() + 1;
		super.setAge(temp);
		System.out.println("[" + this.name + "]が一つ年を取り[" + super.getAge() + "]才になりました");
	}

	public void displayName() {
		System.out.println("この猫の名前は[" + this.name + "]です");
	}

	public String toString() {
		return "この猫は名前が[" + this.name + "]年齢が[" + super.getAge() + "]才です";
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
}

class AmericanShorthair extends MyCat {
	private boolean ismale;

	public AmericanShorthair(String name, int age, boolean ismale) {
		super(name, age);
		super.setName(name);
		super.setAge(age);
		this.ismale = ismale;
		System.out.println("アメリカンショートヘア この猫は名前が[" + super.getName() + "] 年齢が[" + super.getAge() + "]才です");
		System.out.println("性別(ismale)は[" + this.ismale + "]で初期化して生成しました");
	}

	@Override
	public String toString() {
		return "アメリカンショートヘア:[" + super.getName() + "]/[" + super.getAge() + "]才 性別[" + this.ismale + "](雄true/雌false)";
	}

	public void printGender() {
		if (this.ismale == true) {
			System.out.println("アメリカンショートヘア[" + super.getName() + "]は[雄]です");
		} else {
			System.out.println("アメリカンショートヘア[" + super.getName() + "]は[雌]です");
		}
	}
}

class ScottishFold extends MyCat {
	private boolean ear;

	public ScottishFold(String name, int age, boolean ear) {
		super(name, age);
		super.setName(name);
		super.setAge(age);
		this.ear = ear;
		System.out.println("スコティッシュフォールド この猫は名前が[" + super.getName() + "] 年齢が[" + super.getAge() + "]才です");
		System.out.println("耳折れは[" + this.ear + "]で初期化して生成しました");
	}

	public String toString() {
		return "スコティッシュフォールド:[" + super.getName() + "]/[" + super.getAge() + "]才 耳折れ[" + this.ear + "](折れtrue/立ちfalse)";
	}

	public void printEar() {
		if (this.ear == true) {
			System.out.println("スコティッシュフォールド[" + super.getName() + "]の耳は折れています");
		} else {
			System.out.println("スコティッシュフォールド[" + super.getName() + "]の耳は立っています");
		}
	}
}

class MyCatTest {
	public static void main(String[] args) {
		// オブジェクト 単なる猫、4才として生成
		MyCat mc1 = new MyCat("単なる猫", 4);
		mc1.displayName();
		mc1.incrementAge();
		System.out.println();

		AmericanShorthair mas1 = new AmericanShorthair("シマ", 6, true);
		mas1.displayName();
		mas1.printGender();
		mas1.incrementAge();
		System.out.println(mas1);
		System.out.println();

		ScottishFold sf1 = new ScottishFold("マル", 2, true);
		sf1.displayName();
		sf1.printEar();
		sf1.incrementAge();
		System.out.println(sf1);
	}
}

実行結果

この猫の名前を[単なる猫]年齢を[4]才で生成、初期化しました
この猫の名前は[単なる猫]です
[単なる猫]が一つ年を取り[5]才になりました

この猫の名前を[シマ]年齢を[6]才で生成、初期化しました
アメリカンショートヘア この猫は名前が[シマ] 年齢が[6]才です
性別(ismale)は[true]で初期化して生成しました
この猫の名前は[シマ]です
アメリカンショートヘア[シマ]は[雄]です
[シマ]が一つ年を取り[7]才になりました
アメリカンショートヘア:[シマ]/[7]才 性別[true](雄true/雌false)

この猫の名前を[マル]年齢を[2]才で生成、初期化しました
スコティッシュフォールド この猫は名前が[マル] 年齢が[2]才です
耳折れは[true]で初期化して生成しました
この猫の名前は[マル]です
スコティッシュフォールド[マル]の耳は折れています
[マル]が一つ年を取り[3]才になりました
スコティッシュフォールド:[マル]/[3]才 耳折れ[true](折れtrue/立ちfalse)