类的封装性课程学习.pptx

上传人:一*** 文档编号:82659533 上传时间:2023-03-26 格式:PPTX 页数:26 大小:438.03KB
返回 下载 相关 举报
类的封装性课程学习.pptx_第1页
第1页 / 共26页
类的封装性课程学习.pptx_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《类的封装性课程学习.pptx》由会员分享,可在线阅读,更多相关《类的封装性课程学习.pptx(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、类的封装性类的封装性第一页,共26页。2 2相关(xinggun)课程回顾 public class Test public static void main(String args)for(int i=0;i10;i+)System.out.println(i);System.out.println(i=10);请举例说明类与对象请举例说明类与对象(duxing)的区别与联系。的区别与联系。超出超出(choch)了变量了变量i的的访问范围访问范围请指出下列请指出下列Java代码中存在的错误,并改正。代码中存在的错误,并改正。第1页/共26页第二页,共26页。3 3预习(yx)检查举例说明什么

2、是方法举例说明什么是方法举例说明什么是方法举例说明什么是方法(fngf)(fngf)重载?重载?重载?重载?JavaJava中的构造方法中的构造方法中的构造方法中的构造方法(fngf)(fngf)与实例方与实例方与实例方与实例方法法法法(fngf)(fngf),有什么区别?,有什么区别?,有什么区别?,有什么区别?第2页/共26页第三页,共26页。4 4本章(bn zhn)任务升级升级HelloACCPHelloACCP,输出,输出ACCP5.0ACCP5.0教员的教员的自我介绍:自我介绍:对属性进行封装对属性进行封装用构造方法实现对象成员用构造方法实现对象成员(chngyun)(chngyu

3、n)的的初始化初始化对构造方法进行重载对构造方法进行重载 第3页/共26页第四页,共26页。5 5理解封装的概念理解封装的概念掌握掌握privateprivate关键字关键字掌握构造方法掌握构造方法(fngf)(fngf)掌握方法掌握方法(fngf)(fngf)重载重载本章(bn zhn)目标第4页/共26页第五页,共26页。6 6为什么需要(xyo)封装 2-1编写一个类,代表ACCP5.0教员,要求:具有属性(shxng):姓名、年龄具有行为:自我介绍ACCP5.0教员的最小年龄要求:22岁public class AccpTeacher1public String name;/教员姓名教

4、员姓名public int age;/年龄年龄/*返回自我介绍的内容返回自我介绍的内容(nirng)*/public String introduction()return 大家好!我是大家好!我是+name+,我今年,我今年+age+岁岁;第5页/共26页第六页,共26页。7 7为什么需要(xyo)封装 2-2编写一个测试类,要求:实例化一个教员(jioyun)对象,并对其初始化在控制台输出该教员(jioyun)的自我介绍public class AccpTeacher1Test public static void main(String args)AccpTeacher1 teacher

5、=new AccpTeacher1();teacher.name=李芳李芳;teacher.age=10;System.out.println(teacher.introduction();要满足教员的最小年龄要求,可以通过要满足教员的最小年龄要求,可以通过(tnggu)对属性的封装来实现对属性的封装来实现大家好!我是李芳,我今年大家好!我是李芳,我今年 1010岁岁第6页/共26页第七页,共26页。8 8什么(shn me)是封装public class AccpTeacher2 private String name;/教员姓名教员姓名/返回返回(fnhu)教员姓名教员姓名public S

6、tring getName()return name;/设定教员姓名设定教员姓名public void setName(String name)this.name=name;封装封装,就是隐藏就是隐藏(yncng)(yncng)实现细节实现细节将属性私有化,提供公有方法访问私有属性将属性私有化,提供公有方法访问私有属性通过这些公有方法访问私有属性通过这些公有方法访问私有属性 AccpTeacher2 teacher=new AccpTeacher2();teacher.setName(李芳李芳);String tName=teacher.getName();通过通过setter、getter方

7、法访问方法访问name属性属性this代表当前类的实例代表当前类的实例第7页/共26页第八页,共26页。9 9如何(rh)实现封装2-1封装的实现:1、修改属性的可见性来限制对属性的访问2、为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些(zhxi)属性的访问3、在setter和getter方法中,加入对属性的存取限制public class AccpTeacher3 private String name;/教员姓名教员姓名private int age;/年龄年龄(ninlng)public int getAge()return age;public voi

8、d setAge(int age)if(age22)System.out.println(错误!最小年龄错误!最小年龄(ninlng)应为应为22岁!岁!);this.age=22;/如果不符合年龄如果不符合年龄(ninlng)要求,则赋予默认值要求,则赋予默认值 else this.age=age;/此处省略对此处省略对name属性的属性的setter、getter方法方法123第8页/共26页第九页,共26页。1010如何(rh)实现封装2-2public class AccpTeacher3Test public static void main(String args)AccpTeac

9、her3 teacher=new AccpTeacher3();teacher.setName(李芳李芳);teacher.setAge(10);System.out.println(teacher.introduction();使用封装,增加使用封装,增加(zngji)了数据访问限制,增强了程序的可维护性了数据访问限制,增强了程序的可维护性 错误!最小年龄错误!最小年龄(ninlng)应为应为22岁!岁!大家好!我是李芳,我今年大家好!我是李芳,我今年22岁岁测试类通过调用setter方法,为对象的各个属性赋值第9页/共26页第十页,共26页。1111小结(xioji)1使用private关

10、键字修饰某个成员变量后,这个成员变量可以被同一包中的其它(qt)类访问吗?在Java程序中,代码封装带给我们的好处是什么?第10页/共26页第十一页,共26页。1212小结(xioji)2请通过代码封装,实现如下需求:编写一个类Book,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予(fy)默认值200为各属性设置赋值和取值方法具有方法:detail,用来在控制台输出每本教材的名称和页数编写测试类BookTest进行测试:为Book对象的属性赋予(fy)初始值,并调用Book对象的detail方法,看看输出是否正确完整代码完整

11、代码(di(di m)m)实现实现第11页/共26页第十二页,共26页。1313为什么需要(xyo)构造方法 2-1开发ACCP5.0教员类AccpTeacher4,要求:具有(jyu)属性:姓名、年龄、学历、职位具有(jyu)行为:自我介绍public class AccpTeacher4 private String name;/姓名姓名private int age;/年龄年龄private String education;/学历学历private String position;/职位职位public String introduction()return 大家好!我是大家好!我是+

12、name+,我今年,我今年”+age+岁,学历岁,学历“+education+,目前职位是,目前职位是+position;public String getName()return name;public void setName(String myName)name=myName;/以下是其他属性的以下是其他属性的setter、getter方法方法(fngf),此处省略,此处省略第12页/共26页第十三页,共26页。1414为什么需要(xyo)构造方法 2-2编写一个编写一个编写一个编写一个(y)(y)测试类,要求:测试类,要求:测试类,要求:测试类,要求:实例化一个实例化一个实例化一个实例

13、化一个(y)(y)教员对象,并对其初始化教员对象,并对其初始化教员对象,并对其初始化教员对象,并对其初始化在控制台输出该教员的自我介绍在控制台输出该教员的自我介绍在控制台输出该教员的自我介绍在控制台输出该教员的自我介绍public class AccpTeacher4Test public static void main(String args)AccpTeacher4 teacher=new AccpTeacher4();teacher.setName(李芳李芳);teacher.setAge(23);teacher.setEducation(本科本科(bnk);System.out.pr

14、intln(teacher.introduction();要简化对象初始化的代码,可以通过构造方法来解决要简化对象初始化的代码,可以通过构造方法来解决 大家好!我是李芳大家好!我是李芳,我今年我今年23岁,学历本科,目前职位是岁,学历本科,目前职位是nullAccpTeacher4中有中有太多的属性及对应的太多的属性及对应的setter方法,在初始方法,在初始化时,很容易就忘化时,很容易就忘记了,有没有可能记了,有没有可能简化对象初始化的简化对象初始化的代码?代码?第13页/共26页第十四页,共26页。1515什么(shn me)是构造方法构造方法负责对象成员的初始化工作,为实例变量赋予合适的

15、初始值构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回(fnhu)类型public class AccpTeacher5 private String name;/教员教员(jioyun)姓姓名名/构造方法构造方法public AccpTeacher5()name=无名氏无名氏;public class AccpTeacher5Test public static void main(String args)AccpTeacher5 teacher=new AccpTeacher5();n使用new关键字调用构造方法第14页/共26页第十五页,共26页。1616带参数(cnsh)

16、的构造方法 2-1通过通过(tnggu)(tnggu)带参数的构造方法,显式地为实例变量赋予初始带参数的构造方法,显式地为实例变量赋予初始值值 public class AccpTeacher6 private String name;/教员姓名教员姓名private int age;/年龄年龄private String education;/学历学历(xul)private String position;/职位职位/带参数的构造方法带参数的构造方法public AccpTeacher6(String pName,int pAge,String pEducation,String pPos

17、ition)name=pName;age=pAge;/可以增加对可以增加对age等属性的存取限制条件等属性的存取限制条件education=pEducation;position=pPosition;public String introduction()return 大家好!我是大家好!我是+name+,我今年,我今年+age+岁,学历岁,学历(xul)+education+,目前职位是,目前职位是+position;第15页/共26页第十六页,共26页。1717带参数(cnsh)的构造方法 2-2通过调用带参数的构造方法,简化对象(duxing)初始化的代码public class Acc

18、pTeacher6Test public static void main(String args)AccpTeacher6 teacher=new AccpTeacher6(“李李芳芳”,23,本科本科(bnk),咨询师咨询师);System.out.println(teacher.introduction();创建对象时,一并完创建对象时,一并完成了对象成员的初始成了对象成员的初始化工作化工作大家好!我是李芳大家好!我是李芳,我今年我今年23岁,学历本科,目前职位是咨询师岁,学历本科,目前职位是咨询师第16页/共26页第十七页,共26页。1818小结(xioji)3编写一个类Book2,代

19、表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200具有方法:detail,用来在控制台输出每本教材的名称和页数。具有带参数的构造方法:用来完成对象(duxing)的初始化工作,并在构造方法中完成对页数的最小值限制编写测试类Book2Test进行测试:初始化一个Book2对象(duxing),并调用该Book2对象(duxing)的detail方法,看看输出是否正确完整代码完整代码(di m)(di m)实现实现第17页/共26页第十八页,共26页。1919生活(shnghu)中的方法重载类类方法方法(fngf)方法方法(

20、fngf)参数参数方法实现方法实现司机司机 轿车轿车 巴士巴士 火车火车 驾驶驾驶启动、行驶、启动、行驶、等待乘客上车、启动、等待乘客上车、启动、行驶、到站停车、行驶、到站停车、正点发车、行驶、正点发车、行驶、到站停车、到站停车、如果用代码实现,我们需要三个方法,这些方法如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同的方法名称相同,参数类型不同 第18页/共26页第十九页,共26页。2020方法重载(zhn zi)的代码示例 1方法重载并不陌生(mshng)java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式

21、public class Test public static void main(String args)int i=0;char c=z;String str=hello;System.out.println(i);System.out.println(c);System.out.println(str);PrintStreamprintln(int)println(char)println(String)方法名相同,参数类型方法名相同,参数类型(lixng)不同不同调用不同的调用不同的println方法方法方方法法重重载载第19页/共26页第二十页,共26页。2121方法重载(zhn z

22、i)的代码示例 2java.lang.Math类的max()方法能够从两个数字中取出最大值,它有多种实现方式运行时,Java虚拟机先判断给定参数(cnsh)的类型,然后决定到底执行哪个max()方法Mathmax(int a,int b)max(float a,float b)max(long a,long b)max(double a,double b)public class Test public static void main(String args)Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);方方法法(fngf)重重载载第20页

23、/共26页第二十一页,共26页。2222构造方法重载(zhn zi)2-1构造方法(fngf)重载是方法(fngf)重载的典型示例public class AccpTeacher7 private String name;/教员姓名教员姓名private String school=北京中心北京中心;/所在所在(suzi)中中心心public AccpTeacher7(String name)this.name=name;/设定教员姓名设定教员姓名public AccpTeacher7(String name,String school)this.name=name;/设定教员姓名设定教员姓名

24、this.school=school;/设定教员的所在设定教员的所在(suzi)中心中心public String introduction()return 大家好!我是大家好!我是+school+的的+name;构构造造方方法法重重载载第21页/共26页第二十二页,共26页。2323构造方法重载(zhn zi)2-2通过调用不同的构造方法来表达对象的多种初始化行为例如:默认情况下,教师来自北京中心,初始化时,只需提供(tgng)教员姓名有时,需要提供(tgng)所在中心名称及教员姓名public class AccpTeacher7Test public static void main(S

25、tring args)AccpTeacher7 teacher1=new AccpTeacher7(李芳李芳);System.out.println(teacher1.introduction();AccpTeacher7 teacher2=new AccpTeacher7(“张张欣欣”,天津天津(tin jn)中心中心);System.out.println(teacher2.introduction();大家好!我是北京中心的李芳大家好!我是北京中心的李芳大家好!我是天津中心的张欣大家好!我是天津中心的张欣第22页/共26页第二十三页,共26页。2424 小结(xioji)4编写一个类Bo

26、ok3,代表教材:具有属性:名称(title)、页数(pageNum)、种类(type)具有方法:detail,用来在控制台输出每本教材的名称、页数、种类具有两个带参构造方法:第一个构造方法中,设置(shzh)教材种类为“计算机”(固定),其余属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定编写测试类Book3Test进行测试:分别以两种方式完成对两个Book3对象的初始化工作,并分别调用它们的detail方法,看看输出是否正确完整代码完整代码(di m)(di m)实现实现第23页/共26页第二十四页,共26页。2525给定如下Java代码,请指出代码中的错误(cuw),并解释

27、原因。public class Sample private int x;public Sample()x=1;public Sample(int i)x=i;public int Sample(int i)x=i;return x+;private Sample(int i,String s)public Sample(String s,int i)private Sampla(int i)x=i+;private void Sampla(int i)x=i+;总结(zngji)无参构造方法无参构造方法带参构造方法带参构造方法不是不是(b shi)构造方法构造方法带参构造方法带参构造方法带参构造方法带参构造方法名称与类名不相同名称与类名不相同不是构造方法不是构造方法第24页/共26页第二十五页,共26页。2626Thank you第25页/共26页第二十六页,共26页。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理工具

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁