编写教师类Teacher,根据课堂所讲内容设计属性和方法,其中属性至少包括编号tid、姓名tname。给出分数的方法grade()。在教师类之上设计Person类,分析Person类中应有的变量和方法,构建继承关系。将Person类中的setId()方法设计为抽象方法,在教师类中分别实现不同的setId()方法。编写一个接口Compare,包含方法compareTo(Object o),实现对不同对象的大小比较。Person类实现Compare接口,在其子类中具体实现抽象方法compareTo。重写equals方法,具体实现不同的判等操作。修改主类中方法的调用,体现多态性。用Java实现
时间: 2023-06-10 19:03:26 浏览: 85
C#TreeView 无限级别分类实现方法
好的,我可以回答你的问题。以下是我对你的问题的代码实现。请您仔细查看代码,了解其中的继承关系和多态性。
教师类Teacher:
```java
public class Teacher {
private int tid; // 编号
private String tname; // 姓名
public Teacher(int tid, String tname) {
this.tid = tid;
this.tname = tname;
}
// 给出分数的方法
public void grade() {
System.out.println("给学生打分数。");
}
// 设置编号
public void setId1(int id) {
this.tid = id;
}
// 设置姓名
public void setId2(String name) {
this.tname = name;
}
}
```
Person类:
```java
public abstract class Person implements Compare {
protected int pid; // 编号
protected String pname; // 姓名
public Person(int pid, String pname) {
this.pid = pid;
this.pname = pname;
}
// 抽象方法,设置编号
public abstract void setId(int id);
// 比较不同对象的大小
@Override
public int compareTo(Object o) {
Person p = (Person) o;
if (this.pid < p.pid) {
return -1;
} else if (this.pid > p.pid) {
return 1;
} else {
return 0;
}
}
// 重写equals方法,判断相等的操作
@Override
public boolean equals(Object obj) {
if (obj instanceof Person) {
Person p = (Person) obj;
return this.pid == p.pid && this.pname.equals(p.pname);
}
return false;
}
}
```
教师类Teacher继承自Person类:
```java
public class Teacher extends Person {
public Teacher(int tid, String tname) {
super(tid, tname);
}
// 实现Person类中的抽象方法,设置编号
@Override
public void setId(int id) {
this.pid = id;
}
}
```
Compare接口:
```java
public interface Compare {
public int compareTo(Object o);
}
```
主类Main:
```java
public class Main {
public static void main(String[] args) {
// 声明Teacher对象
Teacher teacher1 = new Teacher(101, "Tom");
Teacher teacher2 = new Teacher(102, "Jerry");
// 调用setId方法
teacher1.setId(201);
teacher2.setId(202);
// 比较大小
int result = teacher1.compareTo(teacher2);
if (result < 0) {
System.out.println("teacher1小于teacher2");
} else if (result > 0) {
System.out.println("teacher1大于teacher2");
} else {
System.out.println("teacher1等于teacher2");
}
// 判断相等
if (teacher1.equals(teacher2)) {
System.out.println("teacher1和teacher2相等");
} else {
System.out.println("teacher1和teacher2不相等");
}
// 多态性
Person person = new Teacher(103, "Lucy");
person.setId(203);
person.compareTo(teacher1);
}
}
```
希望我的代码可以对你有所帮助。
阅读全文