java 定义一个Study接口和两个类Student和Postgraduate,要求如下: (1)定义一个Study接口,接口中有一个抽象方法learn(),该方法不接收参数,无返回值。 (2)定义一个学生类Student,实现了Study接口中的learn()方法,打印出字符串“学习”。该类有学号和姓名两个属性,包含无参数和有两个参数的构造方法,以及getter、setter方法。 (3)定义一个研究生类Postgraduate,继承自Student类,重写了父类中的learn()方法,打印出字符串“科研”。该类增加了导师属性,包含无参数和有三个参数的构造方法,以及getter、setter方法。 (4)在测试类中创建Student和Postgraduate类的对象,向上转型为Study类型,创建对象时同时给各个属性赋值,并分别调用learn()方法。
时间: 2024-02-12 19:07:04 浏览: 59
根据要求,我们需要定义一个Study接口和两个类Student和Postgraduate,其中Student类实现了Study接口中的learn()方法,打印出字符串“学习”,Postgraduate类继承自Student类,重写了父类中的learn()方法,打印出字符串“科研”,并增加了导师属性。在测试类中,我们需要创建Student和Postgraduate类的对象,向上转型为Study类型,并调用learn()方法。
Java代码如下:
```java
interface Study {
void learn();
}
class Student implements Study {
private String id;
private String name;
public Student() {
}
public Student(String id, String name) {
this.id = id;
this.name = name;
}
@Override
public void learn() {
System.out.println("学习");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Postgraduate extends Student {
private String tutor;
public Postgraduate() {
}
public Postgraduate(String id, String name, String tutor) {
super(id, name);
this.tutor = tutor;
}
@Override
public void learn() {
System.out.println("科研");
}
public String getTutor() {
return tutor;
}
public void setTutor(String tutor) {
this.tutor = tutor;
}
}
public class Main {
public static void main(String[] args) {
Study s1 = new Student("101", "小明");
s1.learn();
Study s2 = new Postgraduate("201", "小红", "张教授");
s2.learn();
}
}
```
在测试类中,我们分别创建了一个Student和一个Postgraduate对象,并向上转型为Study类型。然后,我们分别调用了它们的learn()方法,输出了“学习”和“科研”两个字符串。
阅读全文