---恢复内容开始---

在类的getter/setter方法中在getter方法中要先实列话

在构造方法中无参构造(必须要构造)好处很多!!!

描述学生信息及相关联的专业信息

把Subject和Stydent的属性进行连接有3中方法

Student中的代码

Subject类中的代码

test类中的代码及输出

专业信息如下:
专业名称   计算机科学
专业编号    J0001
学制年限     4
==============================
学生信息如下:
我的名字是  张三
我的学号为  S01
性别为  性别错误
年龄为  18
所在学科为  计算机科学
学科的年制  4
==============================
学生信息如下:
我的名字是  李四
我的学号为  S02
性别为  女
年龄为  20
所在学科为  计算机科学学院
学科的年制  4
==============================
学生信息如下:
我的名字是  王五
我的学号为  S03
性别为  男
年龄为  21
所在学科为  计算机科学
学科的年制  4

新增需求:计算机专业有多少人

完整代码如下

subject类

package com.jiedada.model;
/**
 * 专业类
 * @author 杰大大
 *
 */
public class Subject {
//学科的名称,学科编号,学制年限
 private String subjectName;
 private String subjectNum;
 private int subjectLife;
 private Student student[];
 private int studentNum;
 //带参构造实现对属性的全部赋值
 public Subject(String subjectName,String subjectNum,int subjectLife)
 {
  this.setSubjectName(subjectName);
  this.setSubjectNum(subjectNum);
  this.setSubjectLife(subjectLife);
 }
 public Subject(String subjectName,String subjectNum,int subjectLife,Student student[],int studentNum)
 {
  this.setSubjectName(subjectName);
  this.setSubjectNum(subjectNum);
  this.setSubjectLife(subjectLife);
  this.setStudent(student);
  this.setStudentNum(studentNum);
 }
 //无参构造
 public Subject()
 {
  
 }
 
 public String getSubjectName() {
  return subjectName;
 }
 public void setSubjectName(String subjectName) {
  this.subjectName = subjectName;
 }
 public String getSubjectNum() {
  return subjectNum;
 }
 public void setSubjectNum(String subjectNum) {
  this.subjectNum = subjectNum;
 }
 public int getSubjectLife() {
  return subjectLife;
 }
 public void setSubjectLife(int subjectLife) {
  if(subjectLife<=0)
  {
   return;
  }
  else
  this.subjectLife = subjectLife;
  
 }
 
 //专业介绍的方法名称,编号,年限
 /*public void info()
 {
  //String str="专业信息如下\n专业名称   "+this.getSubjectName()+"\n专业编号    "+this.getSubjectNum()+"\n学制年限     "+this.getSubjectLife();
  //return str;
  System.out.println("专业名称  "+this.getSubjectName());
  System.out.println("专业编号  "+this.getSubjectNum());
  System.out.println("专业年限  "+this.getSubjectLife());
  
 }*/
 /**
  * 增加学生,判断student是不是实例化了
  * @return 学生的
  */
 public Student[] getStudent() {
  if(student==null)
  {
   this.student=new Student[200];
  }
  return student;
 }
 public void setStudent(Student[] student) {
  this.student = student;
 }
 public int getStudentNum() {
  return studentNum;
 }
 public void setStudentNum(int studentNum) {
  this.studentNum = studentNum;
 }
 public String info() {
  String str="专业信息如下:\n专业名称   "+this.getSubjectName()+"\n专业编号    "+this.getSubjectNum()+"\n学制年限     "+this.getSubjectLife();
    return str;
 }
 public void addNum(Student student)
 {
  int i;
  for(i = 0;i<this.getStudent().length;i++)
  {
   if(this.getStudent()[i]==null)
   {
    this.getStudent()[i]=student;
    break;
   }
  }
  this.setStudentNum(i+1);
 }
}

student类的完整代码

package com.jiedada.model;
public class Student {
//姓名,年龄,性别,学号
 private String studentNo;
 private String studentName;
 private String studentSex;
 private int studentAge;
 private Subject studentSubject;
 //无参构造
 public Student() {
  
 }
 /*public Student(String studentNo, String studentName, String studentSex, int studentAge) {
  this.studentNo = studentNo;
  this.studentName = studentName;
  this.studentSex = studentSex;
  this.studentAge = studentAge;
 }*/
 //有参构造
 public Student(String studentNo,String studentName,String studentSex,int studentAge)
 {
  this.setStudentNo(studentNo);
  this.setStudentName(studentName);
  this.setStudentSex(studentSex);
  this.setStudentAge(studentAge);
 }
 //有参构造而且返回全部属性
 public Student(String studentNo,String studentName,String studentSex,int studentAge,Subject studentSubject)
 {
  this.setStudentNo(studentNo);
  this.setStudentName(studentName);
  this.setStudentSex(studentSex);
  this.setStudentAge(studentAge);
  this.setStudentSubject(studentSubject);
 }
 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 = studentSex;
  else
   this.studentSex="性别错误";
 }
 public int getStudentAge() {
  return studentAge;
 }
 public void setStudentAge(int studentAge) {
  if(studentAge>=10&studentAge<=100)
  this.studentAge = studentAge;
  else
   this.studentAge=18;
 }
 //在创建类的Get是要把类实例化
 public Subject getStudentSubject() {
  if(studentSubject==null)
  {
   this.studentSubject=new Subject();
  }
  return studentSubject;
 }
 public void setStudentSubject(Subject studentSubject) {
  this.studentSubject = studentSubject;
 }
 /**
  * 这是学生自我介绍得等等
  * @return 姓名,学号,姓名,年龄,所在专业,专业年龄
  */
 public String introduction()
 {
  String str="学生信息如下:\n我的名字是  "+this.getStudentName()+"\n我的学号为  "
 +this.getStudentNo()+"\n性别为  "+this.getStudentSex()+"\n年龄为  "+this.studentAge
 +"\n所在学科为  "+this.getStudentSubject().getSubjectName()+"\n学科的年制  "+this.getStudentSubject().getSubjectLife();
  return str;
 }
 /**
  * 学生的自我介绍的方法
  * @param subjectName
  * @param subjectLife
  * @return 姓名,学号,姓名,年龄,所在专业,专业年龄
  */
 public String introduction(String subjectName,int subjectLife)
 {
  String str="学生信息如下:\n我的名字是  "+this.getStudentName()+"\n我的学号为  "
    +this.getStudentNo()+"\n性别为  "+this.getStudentSex()+"\n年龄为  "+this.studentAge
    +"\n所在学科为  "+subjectName+"\n学科的年制  "+subjectLife;
     return str;
 }
 /**
  * 介绍自己
  * @param subject
  * @return 姓名,学号,姓名,年龄,所在专业,专业年龄
  */
 public String introduction(Subject subject)
 {
  String str="学生信息如下:\n我的名字是  "+this.getStudentName()+"\n我的学号为  "
    +this.getStudentNo()+"\n性别为  "+this.getStudentSex()+"\n年龄为  "+this.studentAge
    +"\n所在学科为  "+subject.getSubjectName()+"\n学科的年制  "+subject.getSubjectLife();
     return str;
 }
 
}

test类的完整代码

package com.jiedada.test;
import com.jiedada.model.Student;
import com.jiedada.model.Subject;
public class SchoolTest {
 public static void main(String[] args) {
  // 调试Subject
  Subject sub = new Subject("计算机科学", "J0001", 4);
  System.out.println(sub.info());
  System.out.println("==============================");
  Student stu1=new Student("S01","张三","无",5,sub);
  System.out.println(stu1.introduction());
  System.out.println("==============================");
  Student stu2=new Student("S02","李四","女",20);
  System.out.println(stu2.introduction("计算机科学学院", 4));
  System.out.println("==============================");
  Student stu3=new Student("S03","王五","男",21);
  System.out.println(stu3.introduction(sub));
  sub.addNum(stu1);
  sub.addNum(stu2);
  sub.addNum(stu3);
  System.out.println("选择 "+sub.getSubjectName()+"专业的人数为 "+sub.getStudentNum());
 }
}

Java封装案例的更多相关文章

  1. Java项目案例之--封装的实例

    Java项目案例之---封装的实例 有一个专业类,有一个专业对象,专业名称:计算机科学与技术,专业编号:J001,专业年限:4,对年限添加约束,如果输入小于0,则默认为0,否则显示输入的值 有一个学生 ...

  2. JAVA实用案例之文件导出(JasperReport踩坑实录)

    写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六 ...

  3. 2017.11.5 Java Web ----案例:数据库访问JavaBean的设计

    (12)案例----数据库访问JavaBean的设计 例题:数据库操作在一个Web应用程序中的后台处理中占有大比重,设计一组JavaBean封装数据库的基本操作供上层模块调用,提高程序的可移植性. [ ...

  4. 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点

    087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...

  5. 【原创】中文分词系统 ICTCLAS2015 的JAVA封装和多线程执行(附代码)

    本文针对的问题是 ICTCLAS2015 的多线程分词,为了实现多线程做了简单的JAVA封装.如果有需要可以自行进一步封装其它接口. 首先ICTCLAS2015的传送门(http://ictclas. ...

  6. java封装的方法

    java封装是由Java是面向对象程序设计语言的性质决定的,面向对象程序设计语言的三大特性之一就是封装.封装其实就是包装的意思,从专业的角度来看,就是把对象的所有组成部分组合在一起,保护私有属性. 如 ...

  7. JAVA实用案例之水印开发

    写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...

  8. JAVA实用案例之图片水印开发

    写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...

  9. python面向对象封装案例(附:is和==的区别)

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

随机推荐

  1. phpStrom--我常用的快捷键

    ALT+ ←/→  切换代码视图,标签切换 ALT+ ↑/↓  在方法间快速移动定位 ctrl+shift+r  查找 替换 alt+ctrl+l 格式化代码 CTRL+N   查找类 CTRL+W  ...

  2. MMON进程手工启动

    手工启动MMON进程 1. 故障现象 #某帅哥接到业务人员反映系统缓慢,RAC环境 #生成AWR报告发现节点1没有数据 #查询快照视图,发现只有节点1没有快照记录,节点2正常存在快照记录 SYS &g ...

  3. virtualenv搭建python3 环境

    参考 1.安装python3 安装脚本如下: wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz tar zxvf Python ...

  4. php-fpm的pool池子、php慢日志记录、open_basedir、php-fpm进程管理

    1.php-fpm的poo池子:目的:可以让不同的网站,对于不同的php解析,可以把不同的网站解析区分开.编辑:vim /usr/local/php5-fpm/etc/php-fpm.conf加入: ...

  5. 基础练习 2n皇后问题

    时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同 ...

  6. 【转】浅谈Nginx负载均衡与F5的区别

    前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问 ...

  7. Redis源码剖析--列表t_list实现

    Redis中的列表对象比较特殊,在版本3.2之前,列表底层的编码是 ziplist 和 linkedlist 实现的, 但是在版本3.2之后,重新引入了一个 quicklist 的数据结构,列表的底层 ...

  8. python——psutil的使用(获取进程信息)

    import psutil psutil.pids() [1, 2, 3, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 27, 28, 2 ...

  9. DevExpress皮肤样式

    [时间] 2016-02-15 11:41:11 天气晴 没有雾霾难得的好天气!!! [工具] (1)Visual Studio 2015 (2)DevExpress15.2.3 [感言] 一直以来都 ...

  10. (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80

    问题说明80端口被占用,用netstat -nlp |grep :80命令看看有什么进程占用了80端口,发现是httpd进程. 没想到安装了两个apache,我安装apache2.4的时候删除了2.2 ...