定义一个狗狗类,添加昵称,年龄和品种。 定义一个猫猫类,添加昵称,年龄和颜色。 1、使用封装,实现类的测试。 2、使用继承,提取公共的属性和方法到父类,实现类的测试。: 1、父类Pet和子类Dog,Cat添加有参和无参构造函数,测试子类的使用。 2、请说出类的初始化顺序。 3、添加主人类,通过多态实现给宠物喂食。java开发
时间: 2024-03-10 11:47:52 浏览: 100
好的,我来依次回答您的问题:
1. 使用封装实现狗狗类和猫猫类的测试:
狗狗类的代码如下:
```
public class Dog {
private String nickname; // 昵称
private int age; // 年龄
private String breed; // 品种
public Dog() {
}
public Dog(String nickname, int age, String breed) {
this.nickname = nickname;
this.age = age;
this.breed = breed;
}
// 封装getter和setter方法
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
}
```
猫猫类的代码如下:
```
public class Cat {
private String nickname; // 昵称
private int age; // 年龄
private String color; // 颜色
public Cat() {
}
public Cat(String nickname, int age, String color) {
this.nickname = nickname;
this.age = age;
this.color = color;
}
// 封装getter和setter方法
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
```
测试代码如下:
```
public class Test {
public static void main(String[] args) {
Dog dog = new Dog("旺财", 2, "金毛");
Cat cat = new Cat("咪咪", 3, "黑色");
System.out.println("狗狗的昵称是:" + dog.getNickname() + ",年龄是:" + dog.getAge() + ",品种是:" + dog.getBreed());
System.out.println("猫猫的昵称是:" + cat.getNickname() + ",年龄是:" + cat.getAge() + ",颜色是:" + cat.getColor());
}
}
```
输出结果如下:
```
狗狗的昵称是:旺财,年龄是:2,品种是:金毛
猫猫的昵称是:咪咪,年龄是:3,颜色是:黑色
```
2. 使用继承实现狗狗类和猫猫类的测试:
定义一个宠物类Pet,将狗狗类和猫猫类的公共属性和方法提取到宠物类中:
```
public class Pet {
private String nickname; // 昵称
private int age; // 年龄
public Pet() {
}
public Pet(String nickname, int age) {
this.nickname = nickname;
this.age = age;
}
// 封装getter和setter方法
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat() {
System.out.println("宠物正在吃东西...");
}
}
```
狗狗类继承宠物类:
```
public class Dog extends Pet {
private String breed; // 品种
public Dog() {
}
public Dog(String nickname, int age, String breed) {
super(nickname, age);
this.breed = breed;
}
// 封装getter和setter方法
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
// 重写父类的eat方法
@Override
public void eat() {
System.out.println("狗狗正在吃骨头...");
}
}
```
猫猫类继承宠物类:
```
public class Cat extends Pet {
private String color; // 颜色
public Cat() {
}
public Cat(String nickname, int age, String color) {
super(nickname, age);
this.color = color;
}
// 封装getter和setter方法
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
// 重写父类的eat方法
@Override
public void eat() {
System.out.println("猫猫正在吃鱼...");
}
}
```
测试代码如下:
```
public class Test {
public static void main(String[] args) {
Pet pet1 = new Dog("旺财", 2, "金毛");
Pet pet2 = new Cat("咪咪", 3, "黑色");
System.out.println("宠物1的昵称是:" + pet1.getNickname() + ",年龄是:" + pet1.getAge() + ",品种是:" + ((Dog) pet1).getBreed());
System.out.println("宠物2的昵称是:" + pet2.getNickname() + ",年龄是:" + pet2.getAge() + ",颜色是:" + ((Cat) pet2).getColor());
pet1.eat();
pet2.eat();
}
}
```
输出结果如下:
```
宠物1的昵称是:旺财,年龄是:2,品种是:金毛
宠物2的昵称是:咪咪,年龄是:3,颜色是:黑色
狗狗正在吃骨头...
猫猫正在吃鱼...
```
3. 类的初始化顺序:
类的初始化顺序是:静态变量和静态代码块 -> 实例变量和普通代码块 -> 构造方法。
4. 添加主人类,通过多态实现给宠物喂食:
定义一个主人类:
```
public class Master {
public void feed(Pet pet) {
pet.eat();
}
}
```
测试代码如下:
```
public class Test {
public static void main(String[] args) {
Master master = new Master();
Pet pet1 = new Dog("旺财", 2, "金毛");
Pet pet2 = new Cat("咪咪", 3, "黑色");
master.feed(pet1);
master.feed(pet2);
}
}
```
输出结果如下:
```
狗狗正在吃骨头...
猫猫正在吃鱼...
```
希望我的回答能够帮助到您,如有不清楚的地方可以继续追问我哦~
阅读全文