构造三个类 人 学生 教师 学生和教师继承于人 写一个接口定义 wak 方法由学生和教师分别去实现 人有一个study 方法 学生和教师重写该方法之后用人去调用(父类调用子类)用java实现
时间: 2024-10-29 07:16:51 浏览: 23
在Java中,我们可以构建如下的类结构:
```java
// 定义一个Person类作为基类
public class Person {
private String name;
// 构造函数
public Person(String name) {
this.name = name;
}
// 定义通用的学习方法
public void study() {
System.out.println("这个人正在学习");
}
// 用于演示接口的简单实现
public void wake() {
System.out.println(name + "起床了");
}
}
// 定义Student类继承自Person,并实现Wakeable接口
public class Student extends Person implements Wakeable {
private String major;
public Student(String name, String major) {
super(name);
this.major = major;
}
@Override
public void wake() {
System.out.println(name + "是一名学生,开始新的一天学习" + major);
}
@Override
public void study() {
super.study();
System.out.println(name + "专注于学习专业课程:" + major);
}
}
// 定义Teacher类继承自Person,并实现Wakeable接口
public class Teacher extends Person implements Wakeable {
private String subject;
public Teacher(String name, String subject) {
super(name);
this.subject = subject;
}
@Override
public void wake() {
System.out.println(name + "是一名老师,准备开始教学工作");
}
@Override
public void study() {
super.study();
System.out.println(name + "在深入研究教学内容:" + subject);
}
}
// 定义Wakeable接口
interface Wakeable {
void wake();
}
```
在这个例子中,`Student` 和 `Teacher` 都实现了 `Wakeable` 接口,分别提供了他们特有的唤醒(wake)行为。同时,他们都重写了 `Person` 类的 `study` 方法,以展示继承和多态的特性。
现在,你可以通过 `Person` 类型的引用来调用 `study()` 方法,因为 `Student` 和 `Teacher` 都实现了这个方法:
```java
public static void main(String[] args) {
Person student = new Student("张三", "计算机科学");
Person teacher = new Teacher("李四", "数学");
student.wake(); // 输出:张三是一名学生,开始新的一天学习计算机科学
student.study(); // 输出:张三专注于学习专业课程:计算机科学
teacher.wake(); // 输出:李四是一名老师,准备开始教学工作
teacher.study(); // 输出:李四在深入研究教学内容:数学
}
```
阅读全文