面向对象的Java实现-封装_第1页
面向对象的Java实现-封装_第2页
面向对象的Java实现-封装_第3页
面向对象的Java实现-封装_第4页
面向对象的Java实现-封装_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象的Java实现-封装第十讲2课程地位PrevHTMLSQL BaseLogic JavaC#/WinFormsSTBProject1:ADO.Net+WinForms C/SADO.Net/Three TierJavaScriptSQL AdvanceJava OOPProject2: B/S.Net/OOPJSPAjax/Web ServiceJSP/Servlet/JavaBean/Web ServiceStruts/Hibernate/Spring/AjaxASP.NetNTCProject3: .Net/Java HR/CRM/OA/B2C B/S行业手册行业手册3就业技能结构

2、图4课程目标n学完本门课程后,你能够q熟练使用OO思想编写Java程序q深刻理解并运用继承和接口q深刻理解并运用异常处理程序错误5相关课程回顾 public class Test public static void main(String args) for(int i=0;i10;i+) System.out.println(i); System.out.println(i=10); 请举例说明类与对象的区别与联系请举例说明类与对象的区别与联系超出了变量超出了变量i的的访问范围访问范围请指出下列请指出下列Java代码中存在的错误,并改正。代码中存在的错误,并改正。6预习检查举例说明什么是方

3、法重载?Java中的构造方法与实例方法,有什么区别?7本章任务n输出教员的自我介绍:q对属性进行封装q用构造方法实现对象成员的初始化q对构造方法进行重载 8n理解封装的概念n掌握private关键字n掌握构造方法n掌握方法重载本章目标9为什么需要封装 2-1n编写一个类,代表某个教员,要求:q具有属性:姓名、年龄q具有行为:自我介绍q教员的最小年龄要求:22岁public class Teacher1public String name; / 教员姓名教员姓名public int age; /年龄年龄/* * 返回自我介绍的内容返回自我介绍的内容 */public String introdu

4、ction() return 大家好!我是大家好!我是 + name + ,我今年我今年+ age+岁岁;10为什么需要封装 2-2n编写一个测试类,要求:q实例化一个教员对象,并对其初始化q在控制台输出该教员的自我介绍public class Teacher1Test public static void main(String args) AccpTeacher1 teacher = new AccpTeacher1(); = 李芳李芳;teacher.age =10;System.out.println(roduction(); 要满足教员的

5、最小年龄要求,可以通过对属性的封装来实现要满足教员的最小年龄要求,可以通过对属性的封装来实现大家好!我是李芳,我今年大家好!我是李芳,我今年1010岁岁11什么是封装public class Teacher2 private String name; / 教员姓名教员姓名/ 返回教员姓名返回教员姓名public String getName() return name;/ 设定教员姓名设定教员姓名public void setName(String name) = name;封装,就是隐藏实现细节将属性私有化,提供公有方法访问私有属性通过这些公有方法访问私有属性 Teach

6、er2 teacher = new Teacher2();teacher.setName (李芳李芳);String tName = teacher.getName();通过通过setter、getter方法方法访问访问name属性属性this代表当前类的实例代表当前类的实例12如何实现封装2-1n封装的实现:1、修改属性的可见性来限制对属性的访问2、为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问3、在setter和getter方法中,加入对属性的存取限制public class Teacher3 private String name; / 教员

7、姓名教员姓名private int age; /年龄年龄public int getAge() return age;public void setAge(int age) if (age22) System.out.println(错误!最小年龄应为错误!最小年龄应为22岁!岁!);this.age = 22; /如果不符合年龄要求,则赋予默认值如果不符合年龄要求,则赋予默认值 else this.age = age; /此处省略对此处省略对name属性的属性的setter、getter方法方法12313如何实现封装2-2public class Teacher3Test public st

8、atic void main(String args) Teacher3 teacher = new Teacher3();teacher.setName (李芳李芳);teacher.setAge(10);System.out.println(roduction();使用封装,增加了数据访问限制,增强了程序的可维护性使用封装,增加了数据访问限制,增强了程序的可维护性 错误!最小年龄应为错误!最小年龄应为22岁!岁!大家好!我是李芳,我今年大家好!我是李芳,我今年22岁岁测试类通过调用setter方法,为对象的各个属性赋值14小结 1n使用private关键字修饰某个成员

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

10、并调用Book对象的detail方法,看看输出是否正确16为什么需要构造方法 2-1n教员类Teacher4,要求:q具有属性:姓名、年龄、学历、职位q具有行为:自我介绍public class Teacher4 private String name; / 姓名姓名private int age; / 年龄年龄private String education; / 学历学历private String position; / 职位职位public String introduction() return 大家好!我是大家好!我是 + name + ,我今年,我今年 + age + 岁,学历岁

11、,学历 +education+,目前职位是,目前职位是+position;public String getName() return name;public void setName(String myName) name = myName;/ 以下是其他属性的以下是其他属性的setter、getter方法,此处省略方法,此处省略17为什么需要构造方法 2-2n编写一个测试类,要求:q实例化一个教员对象,并对其初始化q在控制台输出该教员的自我介绍public class Teacher4Test public static void main(String args) Teacher4 te

12、acher = new Teacher4();teacher.setName(李芳李芳);teacher.setAge(23);teacher.setEducation(本科本科);System.out.println(roduction();要简化对象初始化的代码,可以通过构造方法来解决要简化对象初始化的代码,可以通过构造方法来解决 大家好!我是李芳大家好!我是李芳,我今年我今年23岁,学历本科,目前职位是岁,学历本科,目前职位是nullAccpTeacher4中有太多中有太多的属性及对应的的属性及对应的setter方方法,在初始化时,很容易法,在初始化时,很容易就忘记

13、了,有没有可能简就忘记了,有没有可能简化对象初始化的代码?化对象初始化的代码?18什么是构造方法n构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值n构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型public class Teacher5 private String name; / 教员姓名教员姓名/ 构造方法构造方法public Teacher5() name = 无名氏无名氏;public class Teacher5Test public static void main(String args) Teacher5 teacher = new Teache

14、r5();n使用new关键字调用构造方法19带参数的构造方法 2-1n通过带参数的构造方法,显式地为实例变量赋予初始值 public class Teacher6 private String name; / 教员姓名教员姓名private int age; / 年龄年龄private String education; / 学历学历private String position; / 职位职位/ 带参数的构造方法带参数的构造方法public Teacher6(String pName,int pAge, String pEducation,String pPosition) name = p

15、Name;age = pAge; / 可以增加对可以增加对age等属性的存取限制条件等属性的存取限制条件education = pEducation;position = pPosition;public String introduction() return 大家好!我是大家好!我是 + name + ,我今年,我今年 + age + 岁,学历岁,学历 + education + ,目前职位是目前职位是+position;20带参数的构造方法 2-2n通过调用带参数的构造方法,简化对象初始化的代码public class Teacher6Test public static void ma

16、in(String args) Teacher6 teacher = new Teacher6(李芳李芳, 23, 本科本科, 咨询师咨询师);System.out.println(roduction();创建对象时,一并完成了对创建对象时,一并完成了对象成员的初始化工作象成员的初始化工作大家好!我是李芳大家好!我是李芳,我今年我今年23岁,学历本科,目前职位是咨询师岁,学历本科,目前职位是咨询师21小结 3编写一个类Book2,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200具有方法:Sdet

17、ail,用来在控制台输出每本教材的名称和页数具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确22生活中的方法重载类类方法方法方法参数方法参数方法实现方法实现司机司机 轿车轿车 巴士巴士 火车火车 驾驶驾驶启动、行驶、启动、行驶、等待乘客上车、启动、等待乘客上车、启动、行驶、到站停车、行驶、到站停车、正点发车、行驶、正点发车、行驶、到站停车、到站停车、如果用代码实现,我们需要三个方法,这些方法的方法名称如果用代码实现,我们需要三个方法,这些

18、方法的方法名称相同,参数类型不同相同,参数类型不同 23方法重载的代码示例 1n方法重载并不陌生njava.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式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(

19、char)println(String)方法名相同,参数类型不同方法名相同,参数类型不同调用不同的调用不同的println方法方法方法重载方法重载24方法重载的代码示例 2java.lang.Math类的max()方法能够从两个数字中取出最大值,它有多种实现方式运行时,Java虚拟机先判断给定参数的类型,然后决定到底执行哪个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 a

20、rgs) Math.max(1,2);Math.max(1.0F,2.0F);Math.max(1.0,2);方法重载方法重载25构造方法重载 2-1n构造方法重载是方法重载的典型示例public class AccpTeacher7 private String name; / 教员姓名教员姓名private String school = 北京中心北京中心; / 所在中心所在中心public AccpTeacher7(String name) = name; /设定教员姓名设定教员姓名public AccpTeacher7(String name, String sch

21、ool) = name; /设定教员姓名设定教员姓名this.school = school; /设定教员的所在中心设定教员的所在中心public String introduction() return 大家好!我是大家好!我是 + school + 的的 + name ;构造方法重载构造方法重载26构造方法重载 2-2n通过调用不同的构造方法来表达对象的多种初始化行为n例如:q默认情况下,教师来自北京中心,初始化时,只需提供教员姓名q有时,需要提供所在中心名称及教员姓名public class AccpTeacher7Test public static void main(String args) AccpTeacher7 teacher1 = new AccpTeacher7(李芳李芳);System.out.println(roduction();AccpTeacher7 teacher2 = new A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论