设计抽象类person,派生出具体类:学生类student和教师类teacher,创建若干不同类对象后并在主方法中测试。 数据成员定义: person [id,姓名,生日] student [专业,成绩] teacher [职称,工资] 带参构造方法分别为: person(int id,string name, int bir) student(int id,string name, int bir, string major,double score) teacher(int id,string name, int bir, string title, double salary) tostring方法(eclipse自动生成)
时间: 2023-05-31 19:18:07 浏览: 481
### 回答1:
这段字符编码表示了一个设计抽象类person,派生出具体类student和teacher,创建若干不同类对象后在主方法中进行测试。数据成员定义为:person [id,姓名,生日] student [专业,成绩],teacher [职称,工资]。构造函数分别为:person(int id,string name,int bir),student(int id,string name,int bir,string major,double score),teacher(int id,string name,int bir,string title,double salary)。其中有一个toString方法(由Eclipse自动生成)。
### 回答2:
抽象类Person定义如下:
```java
public abstract class Person {
protected int id;
protected String name;
protected int birth;
public Person(int id, String name, int birth) {
this.id = id;
this.name = name;
this.birth = birth;
}
public abstract String getInfo();
@Override
public String toString() {
return getInfo();
}
}
```
注意到抽象类中含有一个抽象方法getInfo(),以及一个toString()方法,用于在具体类中重写并输出对象信息。
学生类Student和教师类Teacher分别继承于Person类,重写getInfo()方法,并添加相应的数据成员和构造方法。
```java
public class Student extends Person {
private String major;
private double score;
public Student(int id, String name, int birth, String major, double score) {
super(id, name, birth);
this.major = major;
this.score = score;
}
@Override
public String getInfo() {
return "学生 " + name + ",专业:" + major + ",成绩:" + score;
}
}
public class Teacher extends Person {
private String title;
private double salary;
public Teacher(int id, String name, int birth, String title, double salary) {
super(id, name, birth);
this.title = title;
this.salary = salary;
}
@Override
public String getInfo() {
return "教师 " + name + ",职称:" + title + ",工资:" + salary;
}
}
```
在主方法中,我们可以创建多个不同类型的对象,并输出其信息。
```java
public static void main(String[] args) {
Student s1 = new Student(1001, "张三", 1999, "计算机科学与技术", 90.5);
Student s2 = new Student(1002, "李四", 1998, "软件工程", 85.0);
Teacher t1 = new Teacher(2001, "王老师", 1976, "教授", 8000.0);
Teacher t2 = new Teacher(2002, "李老师", 1985, "讲师", 5000.0);
System.out.println(s1);
System.out.println(s2);
System.out.println(t1);
System.out.println(t2);
}
```
输出结果如下:
```
学生 张三,专业:计算机科学与技术,成绩:90.5
学生 李四,专业:软件工程,成绩:85.0
教师 王老师,职称:教授,工资:8000.0
教师 李老师,职称:讲师,工资:5000.0
```
### 回答3:
抽象类Person是一个基础类,其中包含了三个数据成员:id、姓名和生日。具体实现的类有Student和Teacher。
在代码中,我们首先声明了抽象类Person,并定义了它的三个数据成员:id,姓名,生日。由于Person是一个抽象类,因此我们不能直接实例化这个类,必须要定义从这个类继承下来的具体实现的类:Student和Teacher。
在Student类中,我们再加入了两个数据成员:专业和成绩。在Teacher类中,加入了职称和工资这两个数据成员。
我们在每个类中定义了带参构造方法,以便在创建对象时能够直接给对象设置属性。同时,在每个类中也重写了toString方法,以便在主方法中方便地输出对象的信息。
在主方法中,我们创建了3个不同类型的对象:person、student和teacher。其中,person对象不能直接实例化,因此我们创建了两个具体实现的类对象:student和teacher。我们为每个对象设置了各自的属性,并调用了相应的toString方法输出对象信息。
总之,通过设计一个抽象类和两个具体实现的类,我们可以创建多个对象,分别给它们设置相应的属性,方便地输出对象信息。这种方法的优点在于,我们可以遵循面向对象的规范,让代码更加易读、易懂,同时也更好地实现了代码的复用。
阅读全文