(1)定义一个动物类 Animal,包含如下成员变量和方法:
(1)定义私有成员变量 name 和 age 表示姓名和年龄;
(2)定义无参构造方法,方法内姓名为“不知名小动物”,年龄为 -1;
(3)定义指定姓名 name 和年龄 age 的有参构造方法;
(4)定义成员变量 name 和 age 的 getter 和 setter;
(5)定义动物睡觉的公开方法 sleep(),输出“Animal sleep.”;
(6)重写 toString() 方法,返回字符串:“动物姓名:?,年龄:?”其中2个问号用对应的值代替。
public class Animal { // 私有成员变量 private String name; private int age; // 无参构造方法 public Animal() { this.name = "不知名小动物"; this.age = -1; } // 有参构造方法 public Animal(String name, int age) { this.name = name; this.age = age; } // getter 和 setter 方法 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; } // 公共的睡觉方法 public void sleep() { System.out.println("Animal sleep."); } // 重写 toString() 方法 @Override public String toString() { return "动物姓名:" + name + ",年龄:" + age; }
(2)定义一个 Cat 类,继承 Animal 类,并按如下步骤定义:
(1)新增一个私有成员变量 breed;
(2)定义指定姓名 name、年龄 age 和品种 breed 的构造方法,调用父类的指定姓名 name 和年龄 age 的构造方法给姓名 name 和年龄 age 初始化;
(3)定义品种 breed 的 getter 和 setter;
(4)重写动物睡觉的方法 sleep() 输出”Cat sleep.”;
(5)编写公开方法 run() ,输出“The cat run fast.”;
(6)重写 toString() 方法,返回字符串:“猫咪姓名:?,年龄:?,品种:?”其中 3 个问号用对应的值代替。
public class Cat extends Animal {
// 私有成员变量
private String breed;
// 指定姓名 name、年龄 age 和品种 breed 的构造方法
public Cat(String name, int age, String breed) {
super(name, age); // 调用父类的构造方法初始化 name 和 age
this.breed = breed;
}
// getter 和 setter 方法
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
// 重写 sleep() 方法
@Override
public void sleep() {
System.out.println("Cat sleep.");
}
// 公开方法 run()
public void run() {
System.out.println("The cat run fast.");
}
// 重写 toString() 方法
@Override
public String toString() {
return "猫咪姓名:" + getName() + ",年龄:" + getAge() + ",品种:" + breed;
}
}
(3)编写测试类 TestAnimal ,该类中包含:
(1)定义静态的公开方法 show(Animala),方法体中调用 Animal 类实例 a 的 startSleep() 方法;
(2)编写主方法 main,主方法中实现以下功能:
① 创建一个 Animal 类对象 animal,姓名是“init”,年龄为 5;
② 创建一个 Cat 类对象 cat,姓名是“H”,年龄为 8,品种为“布偶”;
③ 调用 toString() 方法输出对象 animal 和 dog 的全部属性信息;
④ 分别以对象 animal 和 cat 为实际参数去调用静态方法 show;
public class Cat extends Animal {
// 私有成员变量
private String breed;
// 指定姓名 name、年龄 age 和品种 breed 的构造方法
public Cat(String name, int age, String breed) {
super(name, age); // 调用父类的构造方法初始化 name 和 age
this.breed = breed;
}
// getter 和 setter 方法
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
// 重写 sleep() 方法
@Override
public void sleep() {
System.out.println("Cat sleep.");
}
// 公开方法 run()
public void run() {
System.out.println("The cat run fast.");
}
// 重写 toString() 方法
@Override
public String toString() {
return "猫咪姓名:" + getName() + ",年龄:" + getAge() + ",品种:" + breed;
}
}