Java面向对象编程:模拟学校系统

本示例演示如何使用Java面向对象编程来模拟一个简单的学校系统,包含Person、Teacher、Student和School等类,并展示了继承、封装和多态等面向对象编程概念。

包结构

com.school
├── person
│   └── Person.java
├── teacher
│   └── Teacher.java
├── headteacher
│   └── HeadTeacher.java
├── student
│   └── Student.java
├── school
│   └── School.java
└── Main.java

类定义

包1:com.school.person

package com.school.person;

/**
 * 人员类
 */
public class Person {
    /**
     * 姓名
     */
    private String name;
    /**
     * 年龄
     */
    private int age;

    /**
     * 构造方法
     *
     * @param name 姓名
     * @param age 年龄
     */
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取姓名
     *
     * @return 姓名
     */
    public String getName() {
        return name;
    }

    /**
     * 获取年龄
     *
     * @return 年龄
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置姓名
     *
     * @param name 姓名
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 设置年龄
     *
     * @param age 年龄
     */
    public void setAge(int age) {
        this.age = age;
    }
}

包2:com.school.teacher

package com.school.teacher;

import com.school.person.Person;

/**
 * 教师类
 */
public class Teacher extends Person {
    /**
     * 工号
     */
    private String id;
    /**
     * 教授科目
     */
    private String subject;

    /**
     * 构造方法
     *
     * @param name     姓名
     * @param age      年龄
     * @param id       工号
     * @param subject 教授科目
     */
    public Teacher(String name, int age, String id, String subject) {
        super(name, age);
        this.id = id;
        this.subject = subject;
    }

    /**
     * 获取工号
     *
     * @return 工号
     */
    public String getId() {
        return id;
    }

    /**
     * 获取教授科目
     *
     * @return 教授科目
     */
    public String getSubject() {
        return subject;
    }

    /**
     * 设置工号
     *
     * @param id 工号
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 设置教授科目
     *
     * @param subject 教授科目
     */
    public void setSubject(String subject) {
        this.subject = subject;
    }
}

包3:com.school.headteacher

package com.school.headteacher;

import com.school.teacher.Teacher;

/**
 * 班主任类
 */
public class HeadTeacher extends Teacher {
    /**
     * 班级
     */
    private String className;

    /**
     * 构造方法
     *
     * @param name     姓名
     * @param age      年龄
     * @param id       工号
     * @param subject 教授科目
     * @param className 班级
     */
    public HeadTeacher(String name, int age, String id, String subject, String className) {
        super(name, age, id, subject);
        this.className = className;
    }

    /**
     * 获取班级
     *
     * @return 班级
     */
    public String getClassName() {
        return className;
    }

    /**
     * 设置班级
     *
     * @param className 班级
     */
    public void setClassName(String className) {
        this.className = className;
    }
}

包4:com.school.student

package com.school.student;

import com.school.person.Person;

/**
 * 学生类
 */
public class Student extends Person {
    /**
     * 学号
     */
    private String id;
    /**
     * 班级
     */
    private String className;

    /**
     * 构造方法
     *
     * @param name     姓名
     * @param age      年龄
     * @param id       学号
     * @param className 班级
     */
    public Student(String name, int age, String id, String className) {
        super(name, age);
        this.id = id;
        this.className = className;
    }

    /**
     * 获取学号
     *
     * @return 学号
     */
    public String getId() {
        return id;
    }

    /**
     * 获取班级
     *
     * @return 班级
     */
    public String getClassName() {
        return className;
    }

    /**
     * 设置学号
     *
     * @param id 学号
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 设置班级
     *
     * @param className 班级
     */
    public void setClassName(String className) {
        this.className = className;
    }
}

包5:com.school.school

package com.school.school;

/**
 * 学校类
 */
public class School {
    /**
     * 学校名称
     */
    private String name;

    /**
     * 构造方法
     *
     * @param name 学校名称
     */
    public School(String name) {
        this.name = name;
    }

    /**
     * 获取学校名称
     *
     * @return 学校名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置学校名称
     *
     * @param name 学校名称
     */
    public void setName(String name) {
        this.name = name;
    }
}

包6:com.school.Main

package com.school;

import com.school.headteacher.HeadTeacher;
import com.school.school.School;
import com.school.student.Student;
import com.school.teacher.Teacher;

public class Main {
    public static void main(String[] args) {
        // 创建学校对象
        School school = new School("北京大学");
        System.out.println("学校名称:" + school.getName());

        // 创建教师对象
        Teacher teacher = new Teacher("张老师", 35, "T001", "数学");
        System.out.println("教师姓名:" + teacher.getName() + ", 教授科目:" + teacher.getSubject());

        // 创建班主任对象
        HeadTeacher headTeacher = new HeadTeacher("李老师", 40, "T002", "语文", "高一(1)班");
        System.out.println("班主任姓名:" + headTeacher.getName() + ", 班级:" + headTeacher.getClassName());

        // 创建学生对象
        Student student = new Student("王同学", 17, "S001", "高一(1)班");
        System.out.println("学生姓名:" + student.getName() + ", 班级:" + student.getClassName());
    }
}

运行结果

学校名称:北京大学
教师姓名:张老师, 教授科目:数学
班主任姓名:李老师, 班级:高一(1)班
学生姓名:王同学, 班级:高一(1)班

总结

本示例演示了如何使用Java面向对象编程来模拟一个简单的学校系统,包含Person、Teacher、Student和School等类,并展示了继承、封装和多态等面向对象编程概念。通过这个示例,我们可以更好地理解面向对象编程的优势,并将其应用到实际的软件开发中。

Java面向对象编程:模拟学校系统(Person、Teacher、Student、School)

原文地址: https://www.cveoy.top/t/topic/mNK8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录