编写带有接口和抽象类的标准Javabean类。 数据科学专业的学生:姓名,年龄,学数据科学课程,说英语 人工智能专业的学生:姓名,年龄,学人工智能课程 数据科学专业的教师:姓名,年龄,教数据科学课程,说英语 人工智能专业的教师:姓名,年龄,教人工智能课程
时间: 2023-07-15 11:14:59 浏览: 65
以下是一个示例代码,包含了接口、抽象类和标准Javabean类的实现:
```java
// 接口:学习
public interface Study {
void learn();
}
// 接口:教学
public interface Teach {
void teach();
}
// 抽象类:人员
public abstract class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// getter 和 setter 方法省略
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
// 数据科学专业的学生
public class DataScienceStudent extends Person implements Study {
public DataScienceStudent(String name, int age) {
super(name, age);
}
@Override
public void learn() {
System.out.println("I am learning data science.");
}
@Override
public String toString() {
return "DataScienceStudent{" +
"name='" + getName() + '\'' +
", age=" + getAge() +
'}';
}
}
// 人工智能专业的学生
public class AIStudent extends Person implements Study {
public AIStudent(String name, int age) {
super(name, age);
}
@Override
public void learn() {
System.out.println("I am learning artificial intelligence.");
}
@Override
public String toString() {
return "AIStudent{" +
"name='" + getName() + '\'' +
", age=" + getAge() +
'}';
}
}
// 数据科学专业的教师
public class DataScienceTeacher extends Person implements Teach {
public DataScienceTeacher(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("I am teaching data science.");
}
@Override
public String toString() {
return "DataScienceTeacher{" +
"name='" + getName() + '\'' +
", age=" + getAge() +
'}';
}
}
// 人工智能专业的教师
public class AITeacher extends Person implements Teach {
public AITeacher(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("I am teaching artificial intelligence.");
}
@Override
public String toString() {
return "AITeacher{" +
"name='" + getName() + '\'' +
", age=" + getAge() +
'}';
}
}
```
这里我们定义了两个接口 `Study` 和 `Teach`,分别表示学习和教学的行为。然后我们定义了一个抽象类 `Person`,它包含了所有人员的共性,例如姓名和年龄。最后我们定义了四个具体的类,分别表示数据科学专业的学生、人工智能专业的学生、数据科学专业的教师以及人工智能专业的教师。它们都继承自 `Person`,并且实现了相应的接口。在每个类中,我们重写了 `toString` 方法,以便在后续测试中能够方便地输出类的信息。
下面是一个测试代码,演示如何使用这些类:
```java
public class Main {
public static void main(String[] args) {
DataScienceStudent dataScienceStudent = new DataScienceStudent("Alice", 20);
AIStudent aiStudent = new AIStudent("Bob", 21);
DataScienceTeacher dataScienceTeacher = new DataScienceTeacher("Charlie", 35);
AITeacher aiTeacher = new AITeacher("David", 40);
System.out.println(dataScienceStudent);
System.out.println(aiStudent);
System.out.println(dataScienceTeacher);
System.out.println(aiTeacher);
dataScienceStudent.learn();
aiStudent.learn();
dataScienceTeacher.teach();
aiTeacher.teach();
}
}
```
输出结果如下:
```
DataScienceStudent{name='Alice', age=20}
AIStudent{name='Bob', age=21}
DataScienceTeacher{name='Charlie', age=35}
AITeacher{name='David', age=40}
I am learning data science.
I am learning artificial intelligence.
I am teaching data science.
I am teaching artificial intelligence.
```