6-2 设计抽象动物Animal类及其子类

编写抽象Animal类与其子类Dog类与Cat类,具体要求如下:

  • Animal抽象类私有name属性(String型),私有age属性(int型),抽象方法info(),抽象方法speak(),构造方法,setter和getter
  • Dog类:增加灵性agility属性(int型),覆盖info()和speak()方法,构造方法,setter和getter
  • Cat类:增加捕鼠能力mousingAbility属性(int型),覆盖info()和speak()方法,构造方法,setter和getter
  • 子类重写后的info()方法输出子类特殊属性和名字、年龄属性(具体格式见输出样例);
  • 子类重写后的speak()方法输出各子类叫声(具体格式见输出样例)
  • 在子类构造方法中初始化子类特殊属性,并调用父类构造方法初始化父类属性

已有的主类Main定义:

public class Main {
        public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        Animal a1=new Dog(input.next(),input.nextInt(),input.nextInt());
        Animal a2=new Cat(input.next(),input.nextInt(),input.nextInt());        
        a1.info();
        a1.speak();
        System.out.println(a1.getName());
        System.out.println(a1.getAge());
        a2.info();
        a2.speak();
        System.out.println(a2.getName());
        System.out.println(a2.getAge());
        input.close();
    }
}
/* 请在这里填写你的Animal类、Dog类、Cat类 */

输入样例:

第一行输入狗的名字、年龄和灵性值

第二行输入猫的名字、年龄和捕鼠能力

DogJohn 3 123
CatMike 4 200

结尾无空行

输出样例:

前四行为程序结构测试数据,请严格按题目要求设计类即可。

true
true
true
true
狗的名字是DogJohn,年龄是3,灵性值是123
旺旺
DogJohn
3
猫的名字是CatMike,年龄是4,捕鼠能力是200
喵喵
CatMike
4

 代码如下:

abstract class Animal{
	private String name;
	private int age;
	abstract void info();
	abstract void speak();
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}
class Dog extends Animal{
	private int agility;
	public Dog(String n,int a,int b){
		super.setName(n);
		super.setAge(a);
		this.setAgility(b);
	}
	public int getAgility() {
		return agility;
	}

	public void setAgility(int agility) {
		this.agility = agility;
	}

	public void info() {
		System.out.println("狗的名字是"+getName()+",年龄是"+getAge()+",灵性值是"+getAgility());
	}
	public void speak() {
		System.out.println("旺旺");
	}
}
class Cat extends Animal{
	private int mousingAbility;
	public Cat(String n,int a,int b){
		super.setName(n);
		super.setAge(a);
		this.setMousingAbility(b);
	}
	public int getMousingAbility() {
		return mousingAbility;
	}

	public void setMousingAbility(int mousingAbility) {
		this.mousingAbility = mousingAbility;
	}

	public void info() {
		System.out.println("猫的名字是"+getName()+",年龄是"+getAge()+",捕鼠能力是"+getMousingAbility());
	}
	public void speak() {
		System.out.println("喵喵");
	}
}

  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

дорога Hа Cевер

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值