面向对象的程序设计01_第1页
面向对象的程序设计01_第2页
面向对象的程序设计01_第3页
面向对象的程序设计01_第4页
面向对象的程序设计01_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、2021-11-4威迅教育开发部监制面向对象概念 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代码中存在的错误,并改正。代码中存在的错误,并改正。理解封装的概念掌握private关键字掌握构造方法掌握方法重载OOP旨在在计算机程序中模拟现实世界中的概念在 OOP

2、 中,现实世界的所有事物全都被视为对象能够在计算机程序中用类似的实体模拟现实世界中的实体设计和实现软件系统的方法对对 象象面向对象编程的核心为计算机应用程序提供实用基础完成特定任务表示现实世界中的实体“对象是存在的具体实体,具有明确定义的状态和行为。对象是存在的具体实体,具有明确定义的状态和行为。”收银员对象顾客对象顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品状态状态姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印帐单行为行为“消息指一个对象为执行某项特定操作而向另一个消息指一个对象为执行某项特定操作而向另一个对象发送的请求对象发送的请求”消息传递消息传递当需要执行一项

3、特定操作时,通过向已为其定义此项操作的对象发送消息来请求对象之间通过传递消息实现相互通信类以共同特性和操作定义实体类是用于组合各个对象所共有操作和属性的一种机制形状类形状类动物类动物类汽车类汽车类类的示例类的示例“类是具有相同属性和行为的一组对象的集合类是具有相同属性和行为的一组对象的集合”雇员雇员收银员系统管理员仓库管理员促销员采购经理事物的特性在类中表示为变量每个对象的每个属性都拥有其特有的值属性名称由类的所有实例共享住址住址姓名姓名属性属性年龄年龄“在类中表示对象或实体拥有的特性时称为属性在类中表示对象或实体拥有的特性时称为属性 ”促销员对象促销员对象方法方法操作的实际实现如何执行所请求

4、的操作的规范方法指定操作对象数据的方式在得到操作请求时指定如何做的算法“对象执行的操作称为方法。对象执行的操作称为方法。”缝衣服的步骤缝衣服的步骤量尺寸量尺寸得到工具得到工具缝衣服缝衣服方法方法缝制衣服裁缝 类是概念模型, 定义对象的所 有特性和所需 的操作对象是真实的模型类和对象类定义实体对象是实际的实体类是对象的原型类是对象的原型所有属于同一个类所有属于同一个类的对象都具有相同的对象都具有相同的特性和操作的特性和操作信息隐藏,隐藏对象的实现细节,不让用户看到将东西包装在一起,然后以新的完整形式呈现出来 例如,两种或多种化学药品组成一个胶囊 将方法和属性一起包装到一个单元中,单元以类的形式实

5、现“隐藏属性、方法或实现细节的过程称为封装。隐藏属性、方法或实现细节的过程称为封装。”接口 采购经理罗杰斯先生法拉力公司.迪斯尼汽车公司.市场经理雪莉女士 要求 有选择地提供数据法拉力公司迪斯尼汽车公司公共电话号码电子邮箱产品种类私有备件的制造方法备件库存备件的制造成本公共电话号码电子邮箱汽车种类私有汽车的组装方法汽车库存汽车的组装成本实体法拉力公司实体迪斯尼汽车公司 Auti Ltd.Buto Ltd.属性电话号码电子邮箱产品种类现有存货数量雇员详情所需物料详情属性电话号码电子邮箱汽车种类汽车规格雇员详情库存详情经销商详情方法接收订单备件的制造方法计算备件的制造成本计算利润率方法发出订单汽车

6、的组装方法计算汽车的组装成本计算工资发出订单编制必要报告编写一个类,代表教员,要求: 具有属性:姓名、年龄 具有行为:自我介绍 教员的最小年龄要求:22岁public class Teacher1public String name; / 教员姓名教员姓名public int age; /年龄年龄/* * 返回自我介绍的内容返回自我介绍的内容 */public String introduction() return 大家好!我是大家好!我是 + name + ,我今年我今年+ age+岁岁;编写一个测试类,要求: 实例化一个教员对象,并对其初始化 在控制台输出该教员的自我介绍public c

7、lass Teacher1Test public static void main(String args) Teacher1 teacher = new Teacher1(); = 李芳李芳;teacher.age =10;System.out.println(roduction(); 要满足教员的最小年龄要求,可以通过对属性的封装来实现要满足教员的最小年龄要求,可以通过对属性的封装来实现大家好!我是李芳,我今年大家好!我是李芳,我今年1010岁岁封装,就是隐藏实现细节将属性私有化,提供公有方法访问私有属性通过这些公有方法访问私有属性 publi

8、c class Teacher2 private String name; / 教员姓名教员姓名/ 返回教员姓名返回教员姓名public String getName() return name;/ 设定教员姓名设定教员姓名public void setName(String name) = name;Teacher2 teacher = new Teacher2();teacher.setName (李芳李芳);String tName = teacher.getName();通过通过setter、getter方法方法访问访问name属性属性this代表当前类的实例代表当

9、前类的实例封装的实现:1、修改属性的可见性来限制对属性的访问2、为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问3、在setter和getter方法中,加入对属性的存取限制public class Teacher3 private String name; / 教员姓名教员姓名private int age; /年龄年龄public int getAge() return age;public void setAge(int age) if (age22) System.out.println(错误!最小年龄应为错误!最小年龄应为22岁!岁!);th

10、is.age = 22; /如果不符合年龄要求,则赋予默认值如果不符合年龄要求,则赋予默认值 else this.age = age; /此处省略对此处省略对name属性的属性的setter、getter方法方法123public class Teacher3Test public static void main(String args) Teacher3 teacher = new Teacher3();teacher.setName (李芳李芳);teacher.setAge(10);System.out.println(roduction();使用封装,增加了数据

11、访问限制,增强了程序的可维护性使用封装,增加了数据访问限制,增强了程序的可维护性 错误!最小年龄应为错误!最小年龄应为22岁!岁!大家好!我是李芳,我今年大家好!我是李芳,我今年22岁岁测试类通过调用setter方法,为对象的各个属性赋值使用private关键字修饰某个成员变量后,这个成员变量可以被同一包中的其它类访问吗?在Java程序中,代码封装带给我们的好处是什么?请通过代码封装,实现如下需求:编写一个类Book,代表教材:具有属性:名称(具有属性:名称(title)、页数()、页数(pageNum),其中页数不),其中页数不能少于能少于200页,否则输出错误信息,并赋予默认值页,否则输出

12、错误信息,并赋予默认值200为各属性设置赋值和取值方法为各属性设置赋值和取值方法具有方法具有方法:detail,用来在控制台输出每本教材的名称和页数,用来在控制台输出每本教材的名称和页数编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确开发教员类ATeacher4,要求: 具有属性:姓名、年龄、学历、职位 具有行为:自我介绍public class Teacher4 private String name; / 姓名姓名private int age; / 年龄年龄private String education; / 学

13、历学历private String position; / 职位职位public String introduction() return 大家好!我是大家好!我是 + name + ,我今年,我今年” + age + 岁,学历岁,学历“ +education+,目前职位是,目前职位是+position;public String getName() return name;public void setName(String myName) name = myName;/ 以下是其他属性的以下是其他属性的setter、getter方法,此处省略方法,此处省略编写一个测试类,要求: 实例化一个

14、教员对象,并对其初始化 在控制台输出该教员的自我介绍public class Teacher4Test public static void main(String args) Teacher4 teacher = new Teacher4();teacher.setName(李芳李芳);teacher.setAge(23);teacher.setEducation(本科本科);System.out.println(roduction();要简化对象初始化的代码,可以通过构造方法来解决要简化对象初始化的代码,可以通过构造方法来解决 大家好!我是李芳大家好!我是李芳,我今年

15、我今年23岁,学历本科,目前职位是岁,学历本科,目前职位是nullAccpTeacher4中有太多中有太多的属性及对应的的属性及对应的setter方方法,在初始化时,很容易法,在初始化时,很容易就忘记了,有没有可能简就忘记了,有没有可能简化对象初始化的代码?化对象初始化的代码?构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型public class Teacher5 private String name; / 教员姓名教员姓名/ 构造方法构造方法public Teacher5() name = 无名氏无名氏;pub

16、lic class Teacher5Test public static void main(String args) Teacher5 teacher = new Teacher5(); 使用new关键字调用构造方法通过带参数的构造方法,显式地为实例变量赋予初始值 public class Teacher6 private String name; / 教员姓名教员姓名private int age; / 年龄年龄private String education; / 学历学历private String position; / 职位职位/ 带参数的构造方法带参数的构造方法public Te

17、acher6(String pName,int pAge,String pEducation,String pPosition) name = pName;age = pAge; / 可以增加对可以增加对age等属性的存取限制条件等属性的存取限制条件education = pEducation;position = pPosition;public String introduction() return 大家好!我是大家好!我是 + name + ,我今年,我今年 + age + 岁,学历岁,学历 + education + ,目前职位是目前职位是+position;通过调用带参数的构造方法

18、,简化对象初始化的代码public class Teacher6Test public static void main(String args) Teacher6 teacher = new Teacher6(李芳李芳, 23, 本科本科, 咨询师咨询师);System.out.println(roduction();创建对象时,一并完成了对创建对象时,一并完成了对象成员的初始化工作象成员的初始化工作大家好!我是李芳大家好!我是李芳,我今年我今年23岁,学历本科,目前职位是咨询师岁,学历本科,目前职位是咨询师编写一个类Book2,代表教材: 具有属性:名称(具有属性:名

19、称(title)、页数()、页数(pageNum),其),其中页数不能少于中页数不能少于200页,否则输出错误信息,并赋予页,否则输出错误信息,并赋予默认值默认值200 具有方法:具有方法: detail,用来在控制台输出每本教材的名,用来在控制台输出每本教材的名称和页数。称和页数。 具有带参数的构造方法:用来完成对象的初始化工具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制作,并在构造方法中完成对页数的最小值限制编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确方法重载并不陌生java

20、.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(char)println(String)方法名相同,参数类型不同方法名相同,参数类型不同调用不同的调用不同

21、的println方法方法方法重载方法重载java.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 args) Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);方法重载方法重载构造方法

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

温馨提示

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

评论

0/150

提交评论