7-2 jmu-java-03面向对象-06-继承覆盖综合练习-person、student、employee、company (15 分)
时间: 2023-05-31 21:18:15 浏览: 660
### 回答1:
本讲授将介绍继承与多态的概念及应用。我们将分别以Person、Student、Employee和Company为例,讲解如何使用继承和多态来实现面向对象的编程。通过本课程的学习,你将深刻理解继承与多态的内涵和意义,并能够熟练地运用它们来设计强大的面向对象程序。
### 回答2:
本题目是一道面向对象的综合练习题目,主要涉及到Java中的继承、覆盖等概念。在这道题目中,我们需要实现一个Person类,并且从Person类派生出Student类和Employee类,再从Employee类派生出一个Company类。我们需要重载和覆盖Person、Student、Employee这三个类的方法,并且在Company类中创建Employee的对象,并且调用其方法。下面,我将从每一个类的定义及实现、方法的重载和覆盖以及Company类中的使用等方面详细解答这道题目。
首先,我们需要定义Person类。Person类中包含一个int类型的id、一个String类型的name和一个int类型的age。我们需要为Person类实现构造函数、getters和setters方法以及打印自身信息的方法show信息。具体实现如下:
```
public class Person {
private int id;
private String name;
private int age;
public Person() {}
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void show() {
System.out.println("id: " + id + ", name: " + name + ", age: " + age);
}
}
```
接着,我们需要定义Student类和Employee类。两个类的定义很简单,只需要加上特有的属性即可,如Student类需要包含一个int类型的grade和一个String类型的major,而Employee类需要包含一个double类型的salary。除此之外,我们需要在这两个类中重载并覆盖Person类中的show()方法。
具体实现如下:
```
public class Student extends Person {
private int grade;
private String major;
public Student(int id, String name, int age, int grade, String major) {
super(id, name, age);
this.grade = grade;
this.major = major;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
@Override
public void show() {
System.out.println("I am a student. " + super.getName() + ", " + getAge() + " years old, major in " + major + ", grade " + grade + ".");
}
}
public class Employee extends Person {
private double salary;
public Employee(int id, String name, int age, double salary) {
super(id, name, age);
this.salary = salary;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public void show() {
System.out.println("I am an employee. " + super.getName() + ", " + getAge() + " years old, salary " + salary + ".");
}
}
```
最后,我们需要定义Company类,这个类需要创建一个Employee的对象,并且调用其show()方法。由于Employee类是Person类的子类,因此我们可以使用Person类的实例变量来引用Employee的对象。具体实现如下:
```
public class Company {
public static void main(String[] args) {
Employee employee = new Employee(1001, "张三", 28, 10000.0);
employee.show();
}
}
```
以上就是本题目的完整解答。通过这道题目,我们学会了Java中继承、覆盖等面向对象的编程技巧,这些技巧在实际的开发中非常重要。希望大家能够善加利用,写出更加高效、健壮的Java程序。
### 回答3:
本题是继承覆盖综合练习,需要定义Person(人),Student(学生),Employee(雇员)和Company(公司)类。在这些类中,Person是基类,Student和Employee继承自Person,Company类嵌套包含多个Employee实例。
在Person类中,有两个数据成员name和age,分别表示人的姓名和年龄。在该类中,有一个构造函数用于初始化这两个数据成员。
在Student类中,除了继承Person类中的数据成员name和age之外,还有一个数据成员id和一个函数成员toString。id表示学生的学号,toString是一个重写(override)Person类中的函数成员,用于打印学生的信息,即姓名、年龄和学号。
在Employee类中,继承了Person类中的数据成员name和age,另外还有一个数据成员salary,表示雇员的工资,和一个函数成员toString,用于打印雇员的信息,即姓名、年龄和工资。
在Company类中,嵌套包含多个Employee实例,可以实现添加、删除和打印这些Employee的信息。另外,还有一个函数成员averageSalary,用于计算该公司的平均工资。
总体来说,本题主要考察对继承、覆盖以及嵌套类的基本理解和运用。需要注意的是,在重写函数成员时,需要使用@Override注解来标记该函数成员是一个重写函数成员。
阅读全文