Java实例:在一个大学里,有若干教师和学生。根据这个信息设计三个类University、Teacher、Person和Student,一个接口Learnable。

问题描述

        在一个大学里,有若干教师和学生。根据这个信息设计三个类University、Teacher、Person和Student,一个接口Learnable。要求:

        (1) 设计University类,里面使用常量属性:NAME,其值为NUIST,该类使用单例模式设计。

        (2) 设计Person类,属性包括姓名name和年龄age,添加无参和全参构造方法,并封装。

        (3) 写出Learnable接口,里面包含study()和exercise()两个方法。

        (4) 设计Teacher类(增加工号teacherID属性和工资salary属性)和Student类(增加学号studentID属性和专业major属性),它们继承Person类。

        (4) 学生实现Learnable接口,内容自定。

        (5) University添加类集,包含一个数组,里面存有所有教师和学生对象。

        该类中有如下方法:

        1)void register(Person person) 注册某人

        2)void fire(Person person) 开除一个人

        3)List<Person> searchPerson(String name)根据名字查出所有与此名相同的Person,得到一个数组。

        4)double getTotalSalary() 计算大学里面所有教师的工资总和。

代码实现

(1)University类

package ThreeWork;
import java.util.LinkedList;
import java.util.List;

public class University {
    public static final String NAME = "NUIST";
    private static University university = new University(); //University实例化
    private static Person person = new Person(); //Person实例化
    static List<Person> list = new LinkedList<>(); //List

    //无参构造方法
    public University(){

    }

    //注册某人
    public static void register(Person person){
        list.add(person); //注册一个人
    }

    //开除一个人
    public static void fire(Person person) {
        list.remove(person); //开除一个人
    }

    //根据名字查出所有与此名相同的Person,得到一个数组
    public static Person searchPerson(String name) {
        for (Person person: list) {
            if (person.getName().equals(name)) {
                return person;
            }
        }
        return null;
    }

    //计算大学里面所有教师的工资总和
    public static double getTotalSalary() {
        double totalSalary = 0;
        for (Person person: list) {
            if (person instanceof Teacher) {
                totalSalary = totalSalary + ((Teacher)person).getSalary();
            }
        }
        return totalSalary;
    }

}
(2)设计Person类

package ThreeWork;
public class Person {
    private String name; //名字
    private int age; //年龄

    //Setter
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }

    //Getter
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }

    //无参构造方法
    public Person(){

    }
    //有参构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

(3)写出Learnable接口

package ThreeWork;
public interface Learnable {

    public void study(); //方法1
    public void exercise(); //方法2
}

(4)设计Teacher类

package ThreeWork;
public class Teacher extends Person{
    public String teacherID; //工号
    public double salary; //工资

    //Setter
    public void setTeacherID(String teacherID) {
        this.teacherID = teacherID;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }

    //Getter
    public String getTeacherID() {
        return teacherID;
    }
    public double getSalary() {
        return salary;
    }

    //无参构造方法
    public Teacher(){

    }
    //有参构造方法
    public Teacher(String name, int age, String teacherID, double salary) {
        super(name, age);
        this.teacherID = teacherID;
        this.salary = salary;
    }
}

(5)设计Student类

package ThreeWork;
public class Student extends Person implements Learnable{
    public String studentID; //学号
    public String major; //专业

    @Override
    public void study() {
        System.out.println("学习中.............");
    }
    @Override
    public void exercise() {
        System.out.println("锻炼中...........");
    }

    //无参构造方法
    public Student(){

    }
    //有参构造方法
    public Student(String name, int age, String studentID, String major) {
        super(name, age);
        this.studentID = studentID;
        this.major = major;
    }
}

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等日出看彩虹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值