优化这段代码: 创建测试类对象test ;创建Person类对象person1,引用指向中国人,通过有参构造函数实例化中国人类对象;通过showEat()方法调用Chinese的eat()方法 ;创建Person类对象person2,引用指向英国人,通过有参构造函数实例化英国人类对象 ;通过showEat()方法调用English的eat()方法; 定义showEat方法,使用父类作为方法的形参,实现多态,传入的是哪个具体对象就调用哪个对象的eat()方法;抽象类Person 封装属性name、sex和age ; 构造函数初始化name、sex和age ; 声明抽象方法eat()
时间: 2024-02-12 17:04:29 浏览: 134
创建学生类Student,继承自SchoolPerson类, 添加额外两个属性:班级class、学号sno。 添加方法:打印学生的所有信息print_info方法。
5星 · 资源好评率100%
下面是优化后的代码:
```java
public class Test {
public static void main(String[] args) {
Person person1 = new Chinese("张三", "男", 20);
showEat(person1);
Person person2 = new English("Tom", "男", 25);
showEat(person2);
}
public static void showEat(Person person) {
person.eat();
}
}
abstract class Person {
protected String name;
protected String sex;
protected int age;
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public abstract void eat();
}
class Chinese extends Person {
public Chinese(String name, String sex, int age) {
super(name, sex, age);
}
@Override
public void eat() {
System.out.println(name + "正在吃中餐");
}
}
class English extends Person {
public English(String name, String sex, int age) {
super(name, sex, age);
}
@Override
public void eat() {
System.out.println(name + "is eating Western food");
}
}
```
优化的主要点如下:
1. 将测试代码放入main函数中,利于代码的组织和管理。
2. 去除了Test类中的无用对象test。
3. 在一个方法中传入父类的引用,实现多态调用子类的方法。
4. 在抽象类Person中声明抽象方法eat(),并在子类中实现该方法,实现代码的可扩展性和可维护性。
阅读全文