下图接口Person、Student和Teacher之间的关系,编程实现该类结构关系图,并测试。 注意:接口中的方法“工作”是针对老师,内容是授课,接口中的方法“休息”对于学生来 说是在宿舍休息,对
时间: 2024-12-18 14:28:09 浏览: 2
在Java中,我们可以创建一个接口`Person`,然后分别实现`Student`和`Teacher`两个类,这两个类都是`Person`的子接口。下面是一个简单的例子:
```java
// 定义接口 Person
interface Person {
void work(); // 对于教师来说是授课
void rest(); // 对于学生来说是宿舍休息
}
// 实现接口 Student,增加学习方法
class Student implements Person {
@Override
public void work() {
System.out.println("学生在图书馆学习");
}
@Override
public void rest() {
System.out.println("学生在宿舍休息");
}
// 学生特有的方法,如学习
void study() {
System.out.println("学生正在学习");
}
}
// 实现接口 Teacher,增加授课方法
class Teacher implements Person {
@Override
public void work() {
System.out.println("教师在教室授课");
}
@Override
public void rest() {
System.out.println("教师在办公室休息");
}
// 教师特有的方法,如备课
void prepareLesson() {
System.out.println("教师正在备课");
}
}
// 测试部分
public class Main {
public static void main(String[] args) {
// 创建学生和教师实例
Person student = new Student();
Person teacher = new Teacher();
// 调用各自的方法
student.work(); // 输出 "学生在图书馆学习"
student.rest(); // 输出 "学生在宿舍休息"
teacher.work(); // 输出 "教师在教室授课"
teacher.rest(); // 输出 "教师在办公室休息"
// 老师特有的方法
((Teacher)teacher).prepareLesson(); // 输出 "教师正在备课"
// 学生虽然实现了work方法,但是不能直接调用非自身的特有方法
// try {
// student.prepareLesson(); // 编译错误,因为这是Teacher特有的方法
// } catch (Exception e) {
// e.printStackTrace();
// }
}
}
```
在这个示例中,我们演示了如何通过接口`Person`来统一学生和教师的行为,但在实际操作中,可能会抛出异常,因为学生对象不能调用老师的特有方法。这就是多态的一个应用,它允许我们在运行时动态地选择要执行的方法。
阅读全文