Java实现-封装

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

面向对象的Java实现-封装第一章2课程地位PrevHTMLSQLBaseLogicJavaC#/WinFormsSTBProject1:ADO.Net+WinFormsC/SADO.Net/ThreeTierJavaScriptSQLAdvanceJavaOOPProject2:B/S.Net/OOPJSPAjax/WebServiceJSP/Servlet/JavaBean/WebServiceStruts/Hibernate/Spring/AjaxASP.NetNTCProject3:.Net/JavaHR/CRM/OA/B2CB/S行业手册3就业技能结构图4课程目标学完本门课程后,你能够熟练使用OO思想编写Java程序深刻理解并运用继承和接口深刻理解并运用异常处理程序错误5相关课程回顾publicclassTest{publicstaticvoidmain(String[]args){for(inti=0;i10;i++){System.out.println(i);}System.out.println(i==10);}}请举例说明类与对象的区别与联系超出了变量i的访问范围请指出下列Java代码中存在的错误,并改正。6预习检查举例说明什么是方法重载?Java中的构造方法与实例方法,有什么区别?7本章任务升级HelloACCP,输出ACCP5.0教员的自我介绍:对属性进行封装用构造方法实现对象成员的初始化对构造方法进行重载8理解封装的概念掌握private关键字掌握构造方法掌握方法重载本章目标9为什么需要封装2-1编写一个类,代表ACCP5.0教员,要求:具有属性:姓名、年龄具有行为:自我介绍ACCP5.0教员的最小年龄要求:22岁publicclassAccpTeacher1{publicStringname;//教员姓名publicintage;//年龄/***返回自我介绍的内容*/publicStringintroduction(){return大家好!我是+name+,我今年+age+岁;}}10为什么需要封装2-2编写一个测试类,要求:实例化一个教员对象,并对其初始化在控制台输出该教员的自我介绍publicclassAccpTeacher1Test{publicstaticvoidmain(String[]args){AccpTeacher1teacher=newAccpTeacher1();teacher.name=李芳;teacher.age=10;System.out.println(teacher.introduction());}}要满足教员的最小年龄要求,可以通过对属性的封装来实现大家好!我是李芳,我今年10岁11什么是封装publicclassAccpTeacher2{privateStringname;//教员姓名//返回教员姓名publicStringgetName(){returnname;}//设定教员姓名publicvoidsetName(Stringname){this.name=name;}}封装,就是隐藏实现细节将属性私有化,提供公有方法访问私有属性通过这些公有方法访问私有属性AccpTeacher2teacher=newAccpTeacher2();teacher.setName(李芳);StringtName=teacher.getName();通过setter、getter方法访问name属性this代表当前类的实例12如何实现封装2-1封装的实现:1、修改属性的可见性来限制对属性的访问2、为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的访问3、在setter和getter方法中,加入对属性的存取限制publicclassAccpTeacher3{privateStringname;//教员姓名privateintage;//年龄publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age22){System.out.println(错误!最小年龄应为22岁!);this.age=22;//如果不符合年龄要求,则赋予默认值}else{this.age=age;}}//此处省略对name属性的setter、getter方法}12313如何实现封装2-2publicclassAccpTeacher3Test{publicstaticvoidmain(String[]args){AccpTeacher3teacher=newAccpTeacher3();teacher.setName(李芳);teacher.setAge(10);System.out.println(teacher.introduction());}}使用封装,增加了数据访问限制,增强了程序的可维护性错误!最小年龄应为22岁!大家好!我是李芳,我今年22岁测试类通过调用setter方法,为对象的各个属性赋值14小结1使用private关键字修饰某个成员变量后,这个成员变量可以被同一包中的其它类访问吗?在Java程序中,代码封装带给我们的好处是什么?15小结2请通过代码封装,实现如下需求:编写一个类Book,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200为各属性设置赋值和取值方法具有方法:detail,用来在控制台输出每本教材的名称和页数编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确完整代码实现16为什么需要构造方法2-1开发ACCP5.0教员类AccpTeacher4,要求:具有属性:姓名、年龄、学历、职位具有行为:自我介绍publicclassAccpTeacher4{privateStringname;//姓名privateintage;//年龄privateStringeducation;//学历privateStringposition;//职位publicStringintroduction(){return大家好!我是+name+,我今年+age+岁,学历+education+,目前职位是+position;}publicStringgetName(){returnname;}publicvoidsetName(StringmyName){name=myName;}//以下是其他属性的setter、getter方法,此处省略}17为什么需要构造方法2-2编写一个测试类,要求:实例化一个教员对象,并对其初始化在控制台输出该教员的自我介绍publicclassAccpTeacher4Test{publicstaticvoidmain(String[]args){AccpTeacher4teacher=newAccpTeacher4();teacher.setName(李芳);teacher.setAge(23);teacher.setEducation(本科);System.out.println(teacher.introduction());}}要简化对象初始化的代码,可以通过构造方法来解决大家好!我是李芳,我今年23岁,学历本科,目前职位是nullAccpTeacher4中有太多的属性及对应的setter方法,在初始化时,很容易就忘记了,有没有可能简化对象初始化的代码?18什么是构造方法构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型publicclassAccpTeacher5{privateStringname;//教员姓名//构造方法publicAccpTeacher5(){name=无名氏;}}publicclassAccpTeacher5Test{publicstaticvoidmain(String[]args){AccpTeacher5teacher=newAccpTeacher5();}}使用new关键字调用构造方法19带参数的构造方法2-1通过带参数的构造方法,显式地为实例变量赋予初始值publicclassAccpTeacher6{privateStringname;//教员姓名privateintage;//年龄privateStringeducation;//学历privateStringposition;//职位//带参数的构造方法publicAccpTeacher6(StringpName,intpAge,StringpEducation,StringpPosition){name=pName;age=pAge;//可以增加对age等属性的存取限制条件education=pEducation;position=pPosition;}publicStringintroduction(){return大家好!我是+name+,我今年+age+岁,学历+education+,目前职位是+position;}}20带参数的构造方法2-2通过调用带参数的构造方法,简化对象初始化的代码publicclassAccpTeacher6Test{publicstaticvoidmain(String[]args){AccpTeacher6teacher=newAccpTeacher6(李芳,23,本科,咨询师);System.out.println(teacher.introduction());}}创建对象时,一并完成了对象成员的初始化工作大家好!我是李芳,我今年23岁,学历本科,目前职位是咨询师21小结3编写一个类Book2,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200具有方法:Sdetail,用来在控制台输出每本教材的名称和页数具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确完整代码实现22生活中的方法重载类方法方法参数方法实现司机轿车巴士火车驾驶启动、行驶、……等待乘客上车、启动、行驶、到站停车、……正点发车、行驶、到站停车、……如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同23方法重载的代码示例1方法重载并不陌生java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式publicclassTest{publicstaticvoidmain(String[]args){inti=0;charc='z';Stringstr=hello;System.out.println(i);System.out.println(c);System.out.println(str);}}PrintStreamprintln(int)println(char)println(String)……方法名相同,参数类型不同调用不同的println方法方法重载24方法重载的代码示例2java.lang.Math类的max()方法能够从两个数字中取出最大值,它有多种实现方式运行时,Java虚拟机先判断给定参数的类型,然后决定到底执行哪个max()方法Mathmax(inta,intb)max(floata,floatb)max(longa,longb)max(doublea,doubleb)publicclassTest{publicstaticvoidmain(String[]args){Math.max(1,2);Math.max(1.0F,2.0F);Math.ma

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功