Java封装案例
---恢复内容开始---
在类的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类的完整代码
//姓名,年龄,性别,学号
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;
}
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类的完整代码
import com.jiedada.model.Subject;
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封装案例的更多相关文章
- Java项目案例之--封装的实例
Java项目案例之---封装的实例 有一个专业类,有一个专业对象,专业名称:计算机科学与技术,专业编号:J001,专业年限:4,对年限添加约束,如果输入小于0,则默认为0,否则显示输入的值 有一个学生 ...
- JAVA实用案例之文件导出(JasperReport踩坑实录)
写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六 ...
- 2017.11.5 Java Web ----案例:数据库访问JavaBean的设计
(12)案例----数据库访问JavaBean的设计 例题:数据库操作在一个Web应用程序中的后台处理中占有大比重,设计一组JavaBean封装数据库的基本操作供上层模块调用,提高程序的可移植性. [ ...
- 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点
087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...
- 【原创】中文分词系统 ICTCLAS2015 的JAVA封装和多线程执行(附代码)
本文针对的问题是 ICTCLAS2015 的多线程分词,为了实现多线程做了简单的JAVA封装.如果有需要可以自行进一步封装其它接口. 首先ICTCLAS2015的传送门(http://ictclas. ...
- java封装的方法
java封装是由Java是面向对象程序设计语言的性质决定的,面向对象程序设计语言的三大特性之一就是封装.封装其实就是包装的意思,从专业的角度来看,就是把对象的所有组成部分组合在一起,保护私有属性. 如 ...
- JAVA实用案例之水印开发
写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...
- JAVA实用案例之图片水印开发
写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...
- python面向对象封装案例(附:is和==的区别)
面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...
随机推荐
- (6个name="hobby"的复选项,两个按钮)来区分三种方法的不同---区别getElementByID,getElementsByName,getElem
<form> 请选择你爱好:<br> <input type="checkbox" name="hobb ...
- 从图像中检测和识别表格,北航&微软提出新型数据集 TableBank
纯学术 的识别表格的文章: http://hrb-br.com/5007404/20190321A0B99Y00.html https://github.com/doc-analysis/TableB ...
- Unity 3D读取Excel表格、导入信息、导出Json
Unity 3D读取/导入Excel表格 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...
- SQLI DUMB SERIES-5
less5 (1)输入单引号,回显错误,说明存在注入点.输入的Id被一对单引号所包围,可以闭合单引号 (2)输入正常时:?id=1 说明没有显示位,因此不能使用联合查询了:可以使用报错注入,有两种方式 ...
- PostgreSQL的目录结构及修改数据目录
initdb 的时候会指定一个 PGDATA 目录,这就是 PostgresQL 存储数据的地方,比如:/var/lib/pgsql/10/data.======显示数据目录1. 进入psqlsudo ...
- 【HDOJ4109】【拓扑OR差分约束求关键路径】
http://acm.hdu.edu.cn/showproblem.php?pid=4109 Instrction Arrangement Time Limit: 2000/1000 MS (Java ...
- python------模块定义、导入、优化 ------->hashlib模块
一.hashlib模块 用于加密相关的操作,3.x版本里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法. (MD5消息摘要算法(英语 ...
- 监控页面后退前进,浏览器文档加载事件之pageshow、pagehide
https://www.cnblogs.com/milo-wjh/p/6811868.html http://www.runoob.com/jsref/event-onpageshow.html on ...
- seelog 文件输出格式
项目中用到seelog,希望每个小时的记录输入在当前小时命名的日志,配置如下: <seelog> <outputs formatid="leads"> &l ...
- AspNetCore+Swagger 生成Model描述
AspNetCore+Swagger 生成Model 描述 前言: 本篇文章实现是基于上一篇文章,进下补充:多余的就不多说了,只是为了实现Model的描述生成:有兴趣的可以结合上一篇的进行实现:如有更 ...