Java封装Demo

模拟场景实现:
某校开设“计算机科学与应用”专业,专业编号J0001,学制4年。 现有3名学生都报名学习了这个专业。

代码逻辑:

student类:

package com.geekmubai.moudel;

public class Student {
    //成员属性:学号、姓名、性别、年龄
    private String studentNo;
    private String studentName;
    private String studentSex;
    private int studentAge;

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

    }

    //多参构造方法实现对全部属性的赋值


    public Student(String studentNo, String studentName, String studentSex, int studentAge) {
        this.setStudentNo(studentNo);
        this.setStudentName(studentName);
        this.setStudentSex(studentSex);
        this.setStudentAge(studentAge);
    }

    public String getStudentNo() {
        return studentNo;
    }

    public void setStudentNo(String studentNo) {
        this.studentNo = studentNo;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getStudentSex() {
        return studentSex;
    }

    public void setStudentSex(String studentSex) {
        if (studentSex !="男" && studentSex != "女" )
            this.studentSex = "男";
        else
            this.studentSex = studentSex;
    }

    public int getStudentAge() {
        return studentAge;
    }

    public void setStudentAge(int studentAge) {
        if (studentAge<10 || studentAge>100)
            this.studentAge = 18;
        else
            this.studentAge = studentAge;
    }

    //学生自我介绍的方法
    public String introduction(){
        String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge();
        return str;
    }
    //传入字符串
    public String introduction(String subjectName,int subjectLife){
        String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge()+ "\n专业:" + subjectName+"\n年限:"+subjectLife;
        return str;
    }
    //传入对象
    public String introduction(Subject mySubject){
        String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge()+ "\n专业:" + mySubject.getSubjectName()+"\n年限:"+mySubject.getSubjectLife();
        return str;
    }

}

subject类

package com.geekmubai.moudel;

public class Subject {
    //成员属性:学科名称、学科编号、学制年限、学生信息、报名的学生数
    private String subjectName;
    private String subjetcNo;
    private int subjectLife;
    private Student[] myStudents;
    private int studentNum;

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

    }

    //带参构造,实现对学科名称、编号、学制年限的赋值
    public Subject(String subjectName, String subjectNo, int subjectLife) {
        //this赋值,调用成员属性 没有业务逻辑 不推荐
        //this.subjectName = subjectName;
        //推荐用下面的set方法赋值
        this.setSubjectName(subjectName);
        this.setSubjetcNo(subjectNo);
        this.setSubjectLife(subjectLife);
    }
    //带参构造,实现对属性的全部赋值
    public Subject(String subjectName, String subjectNo, int subjectLife,Student[] myStudents) {
        this.setSubjectName(subjectName);
        this.setSubjetcNo(subjectNo);
        this.setSubjectLife(subjectLife);
    }

    //get、set方法
    public String getSubjectName() {
        return subjectName;
    }

    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }

    public String getSubjetcNo() {
        return subjetcNo;
    }

    public void setSubjetcNo(String subjetcNo) {
        this.subjetcNo = subjetcNo;
    }

    public int getSubjectLife() {
        return subjectLife;
    }

    public Student[] getMyStudents() {
        //数组初始化
        if (this.myStudents == null)
            this.myStudents = new Student[200];
        return myStudents;
    }

    public void setMyStudents(Student[] myStudents) {
        this.myStudents = myStudents;
    }

    public int getStudentNum() {
        return studentNum;
    }

    public void setStudentNum(int studentNum) {
        this.studentNum = studentNum;
    }

    //设置学制年限>0
    public void setSubjectLife(int subjectLife) {
        if (subjectLife <= 0)
            return;
        this.subjectLife = subjectLife;
    }
    //专业介绍的方法
    public String info() {
        String str = "专业信息如下:\n专业名称:" + this.getSubjectName() + "\n专业编号:" + this.getSubjetcNo() + "\n学制年限:" + this.getSubjectLife();
        return str;
    }

    // 1、将学生保存到数组中。
    // 2、将学生数保存到studentNum
    public void addStudent(Student stu){
        for (int i=0;i<this.getMyStudents().length;i++){
            if (this.getMyStudents()[i]==null){
                this.getMyStudents()[i]=stu;
                this.studentNum=i+1;
                return;
            }
        }
    }
}

测试类

package com.geekmubai.test;

import com.geekmubai.moudel.Student;
import com.geekmubai.moudel.Subject;

public class SubjectTest {
    public static void main(String[] args) {
        //测试subject
        Subject sub = new Subject("计算机科学与技术","J0001",4);
        System.out.println(sub.info());
        System.out.println("=======================");
        //测试student
        Student stu = new Student("S01","慕白","男",20);
        System.out.println(stu.introduction());
        System.out.println("=======================");
        //新增student
        Student stu1 = new Student("S02","南宫","女",18);
        System.out.println(stu1.introduction("网络工程",4));
        System.out.println("=======================");
        Student stu2 = new Student("S03","刘严","女",18);
        System.out.println(stu2.introduction(sub));
        System.out.println("=======================");
        //测试指定专业报名人数
        sub.addStudent(stu);
        sub.addStudent(stu1);
        sub.addStudent(stu2);
        System.out.println(sub.getSubjectName()+"的专业已有"+sub.getStudentNum()+"人报名!");
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值