用 java编写一个测试类,1)创建方法public static void m1(Person p),显示p的姓名;2)创建方法public static void m2(Person p),打印p的toString方法返回的字符串;3)创建方法public static void m3(Person p),如果p是Student类或者Employee类的实例,分别调用它们的displayObject();4)在主函数中创建Person、Student、Employee的对象实例,将它们均声明为Person类对象。将它们分别传入m1、m2和m3,体会多态。
时间: 2024-02-16 11:04:50 浏览: 75
创建学生(Student)类,并实例化对象访问测试
5星 · 资源好评率100%
好的,以下是你所需的Java代码:
```
public class TestPerson {
public static void main(String[] args) {
Person person = new Person("John");
Student student = new Student("Jack", "CS");
Employee employee = new Employee("Tom", "Google");
m1(person);
m2(student);
m3(employee);
Person studentAsPerson = new Student("Alice", "Math");
Person employeeAsPerson = new Employee("Bob", "Facebook");
m1(studentAsPerson);
m2(employeeAsPerson);
m3(studentAsPerson);
m3(employeeAsPerson);
}
public static void m1(Person p) {
System.out.println(p.getName());
}
public static void m2(Person p) {
System.out.println(p.toString());
}
public static void m3(Person p) {
if (p instanceof Student) {
((Student) p).displayObject();
} else if (p instanceof Employee) {
((Employee) p).displayObject();
}
}
}
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String toString() {
return "Person " + name;
}
}
class Student extends Person {
private String major;
public Student(String name, String major) {
super(name);
this.major = major;
}
public void displayObject() {
System.out.println("Student " + getName() + ", Major: " + major);
}
public String toString() {
return "Student " + getName() + ", Major: " + major;
}
}
class Employee extends Person {
private String company;
public Employee(String name, String company) {
super(name);
this.company = company;
}
public void displayObject() {
System.out.println("Employee " + getName() + ", Company: " + company);
}
public String toString() {
return "Employee " + getName() + ", Company: " + company;
}
}
```
在这个代码中,我们创建了一个`TestPerson`类,其中包含了4个方法和3个类。我们在`main`方法中创建了`Person`、`Student`和`Employee`的实例,并将它们均声明为`Person`类对象,然后分别传入了`m1`、`m2`和`m3`方法,体会了多态。
`m1`方法接受一个`Person`对象,并显示它的姓名。`m2`方法接受一个`Person`对象,并打印它的`toString`方法返回的字符串。`m3`方法接受一个`Person`对象,并如果它是`Student`类或者`Employee`类的实例,分别调用它们的`displayObject`方法。
`Person`、`Student`和`Employee`都是类,其中`Student`和`Employee`都继承自`Person`,并且它们都有`displayObject`和`toString`方法。`displayObject`方法在子类中被重写,以便我们可以使用多态来调用它们。`toString`方法也在子类中被重写,以便我们可以使用多态来打印它们的字符串表示形式。
阅读全文