04 Java的面向对象程序设计2

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

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

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

资源描述

1第四讲面向对象程序设计2讲师:2上讲回顾•OOP与PPL•类和对象:逻辑模型和物理实体•new关键字•引用变量的实质•实例字段变量与本地局部变量的区别•类的封装原则31、永远保持数据私有。这是首先需要考虑的最重要的一点:2、永远初始化数据。Java并不对本地变量初始化,但它会初始化对象中的实例字段。但是永远不要依赖于默认值;3、不要在一个类中使用太多的基本类型。4、并非所有字段都需独自的字段访问方法和更改方法5、用标准形式对类定义。我们总是以下面的次序列出类的内容:公开部件;包作用域部件;私有部件在每一部分内我们列出次序如下:实例方法;静态方法;实例字段;静态字段6、把有太多职责的类分解。7、使类和方法的名字反映它们的职责。开发中要注意的(类设计技巧)4本讲目标掌握类的构造器掌握包概念和应用掌握访问控制5回顾一下类的组成classCar{StringstrProvider=“”;intnDoorNumber=0;intnSpeed=0;voidbrake(){…}voidspeedUp(){…};voidslowDown(){…}}6本讲目标掌握类的构造器掌握包概念和应用掌握访问控制7构造器构造器是类的一种特殊方法,它的特殊性主要体现在以下的几个方面:(1)构造器的方法名与类名相同(2)构造器没有返回类型(3)构造器的主要作用是用于构造并初始化对象(4)构造器总是和new运算符一起被调用(5)构造器可以有0、1或多个参数(6)构造器不能够被类中其它方法显式调用8构造器classBox{doublewidth;doubleheight;doubledepth;Box(){System.out.println(ConstructingBox);width=10;height=10;depth=10;}doublevolume(){returnwidth*height*depth;}}9默认构造函数默认构造函数指没有参数的构造函数如果编写的类没有构造函数,系统会自动提供一个默认构造函数,它把对应类中所有的实例字段设为默认值10带参数的构造函数classBox{doublewidth;doubleheight;doubledepth;Box(doublew,doubleh,doubled){width=w;height=h;depth=d;}doublevolume(){returnwidth*height*depth;}}调用:Boxmybox1=newBox(10,20,15);Boxmybox2=newBox(3,6,9);11什么是重载(overloading)?在相同的作用域里面,至少有两个方法具有相同的方法名,且参数声明不同就构成了重载。参数声明不同包括个数不同类型不同顺序不同(列表内的类型不完全相同)不建议使用顺序不同的重载。12重载构造函数•Java为每一个类自动提供缺省构造函数•一旦创建了自己的构造函数,缺省的构造函数将不复存在。•重载构造函数提供了一组创建对象的方式,可以根据需要决定是否带初始参数。publicclassconstructOverload{intx;constructOverload(){x=0;System.out.println(不带参数的构造函数);}constructOverload(intx){this.x=x;System.out.println(带一个参数的构造函数);}}13重载机制实现原理编译器列举所有同名方法检查各方法中提供的参数类型选择调用最佳匹配方法:如无法找到,或找到多个方法匹配,报告错误14构造函数的规则(一):构造函数能够使用任何方法修饰符,包括private。构造函数名称必须与类名相同构造函数一定不能有返回类型让方法与类具有相同的名称是合法的(但是愚蠢的),但是,这并不能使它成为一个构造函数。如果看到返回类型,它就是一个方法,而不是构造函数15默认构造函数总是无参数构造函数显式调用构造函数的唯一方法是从另一个构造函数之内调用。如果想要无参数构造函数,并且类代码中已包含其他任何构造函数,编译器将不提供无参数构造函数。如果不在类代码中输入构造函数,编译器将自动生成默认构造函数构造函数的规则(二):16publicclassExample{inta,b;{a=11;b=22;}publicExample(){a=10;b=20;}}提问:能编译通过吗??17初始化块Java中有三种初始化属性的方式:声明中赋值在构造函数中设置值初始化块这种机制并不是必须的,而且也不常见。把初始化代码放在构造函数内显得更为直截了当18Java构造函数执行过程:1.初始化所有数据字段为默认值(0、false、null)2.按照在类声明中出现的次序依次执行所有实例字段初始化语句和初始化块语句3.执行父类构造器主体,4.执行被调用的构造器主体5.执行构造函数主体19本讲目标掌握类的构造器掌握包概念和应用掌握访问控制20《读者文摘》显卡128位/镭9600系列艾尔莎、丽台、七彩虹21包概念及用途包就是一组类和接口Java中,一般将相关的类和接口组织在同一个包中Java核心包:1、java.lang2、java.io3、java.util4、java.io使用包的主要原因:保证类名的唯一性包的命名规范:公司域名倒写例如:com.thinkbank.applicationname22使用包import语句:引入特定包中的类如果不使用import语句引入特定类,在程序代码中就要使用完整包名来使用相关类importjavax.swing.*;package语句:将当前类放入指定包中packagecom.thinkbank.bookmanager;23本讲目标掌握类的构造器掌握包概念和应用掌握访问控制24访问控制类的访问控制类成员的访问控制25访问控制访问控制:对类成员的访问权限说明,包括实例字段和方法访问控制有以下四种权限说明:(1)public:对一切可见(2)默认(无任何显式说明):对本包可见(3)protected:对子类和本包可见(4)private:只对本类可见26publicpublic关键字以及例子27privateprivate关键字以及例子28默认访问控制classtest{Strings;voidPrint(){System.out.println(s);}类,方法,变量都可以没有修饰符。29默认修饰符的作用域同一包内可见。不同包拒绝访问。30protected继承访问权限方法,变量可以使用protected修饰符同一包内可见。不同包的子类可见。31课堂练习模拟一个简易银行存取款系统要求:储户信息要求保密可实现对指定用户的存取款业务步骤:1、先设计与此应用相关的类;2、设计与此类相关的实例字段;3、设计与对应的存取款方法;4、考虑实际可行性;32本讲总结构造函数的重载:编译时解析绑定包四种访问控制33课后练习及作业1、完善图书管理系统类设计要求:所有实例字段私有,有对应的公共读取方法2、设计一个学生类1、包括学生的基本信息:姓名、学号等2、设计两个构造器3、实现学生信息的编辑:修改基本信息4、提供学生信息显示5、本类提供单独的单元测试以测试相关类提供的功能3、设计一个学生测试类对2项学生类的相关功能进行测试,要求两个类封装到不同的包4、设计一个立体矩形类,可计算出其周长和面积和体积(长、宽、高要求可从键盘随机输入,并有有效性验证)34下讲内容封装类String类和StringBuffer类数组使用

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

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

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

×
保存成功