设计一个学生类(Student)和它的子类本科生类(Undergraduate),要求如下:

(1)学生类(Student)有name和age两个属性,定义一个无参构造方法和一个有两个参数的构造方法(用于给name和age属性赋值),一个show()方法打印Student的属性信息;
(2)本科生类(Undergraduate)增加一个zy(专业)属性。有一个包含三个参数的构造方法(前两个参数用于给继承的name和age属性赋值,第三个参数给zy(专业)赋值),重写show()方法打印Undergraduate的属性信息;
(3)在测试类中分别创建Student和Undergraduate的对象,调用它们的show()方法。

是需要写好的代码吗,还是哪里有问题,只需要写两个实体类就可以了

class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void show() {
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
    }
}

class Undergraduate extends Student {
    private String zy; // 专业

    public Undergraduate(String name, int age, String zy) {
        super(name, age); // 调用父类的构造方法来给name和age赋值
        this.zy = zy;
    }

    @Override
    public void show() {
        super.show(); // 调用父类的show()方法打印基本信息
        System.out.println("专业:" + zy);
    }
}

public class Test {
    public static void main(String[] args) {
        Student student = new Student("张三", 20);
        student.show();
        System.out.println("------------------");
        Undergraduate undergraduate = new Undergraduate("李四", 22, "计算机科学");
        undergraduate.show();
    }
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    可以开始进行优化和代码编写了。

    首先,我们需要创建一个名为Student的类,用来表示学生。这个类包含两个属性,分别是name和age。我们需要定义一个无参构造方法和一个有两个参数的构造方法来给这两个属性赋值。然后,我们还需要定义一个show()方法来打印出学生对象的属性信息。

    public class Student {
        private String name;
        private int age;
    
        public Student() {
        }
    
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public void show() {
            System.out.println("姓名:" + name);
            System.out.println("年龄:" + age);
        }
    }
    

    接下来,我们需要创建一个名为Undergraduate的子类,并继承自Student类。这个子类在Student类的基础上增加了一个zy属性,表示专业。我们需要定义一个包含三个参数的构造方法来赋值继承的name和age属性以及zy属性。此外,我们还需要重写父类的show()方法,以便打印出本科生对象的属性信息。

    public class Undergraduate extends Student {
        private String zy;
    
        public Undergraduate(String name, int age, String zy) {
            super(name, age);
            this.zy = zy;
        }
    
        @Override
        public void show() {
            super.show();
            System.out.println("专业:" + zy);
        }
    }
    

    最后,我们可以在测试类中创建一个学生对象和一个本科生对象,并调用它们的show()方法来查看它们的属性信息。

    public class Main {
        public static void main(String[] args) {
            Student student = new Student("张三", 20);
            student.show();
    
            System.out.println();
    
            Undergraduate undergraduate = new Undergraduate("李四", 22, "计算机科学与技术");
            undergraduate.show();
        }
    }
    

    以上代码实现了一个Student类和它的子类Undergraduate类,满足了题目的要求。我们可以运行测试类来验证代码的正确性。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^