Java程序设计及应用开发第4章-封装与类课件

上传人:工**** 文档编号:567515806 上传时间:2024-07-21 格式:PPT 页数:44 大小:1.52MB
返回 下载 相关 举报
Java程序设计及应用开发第4章-封装与类课件_第1页
第1页 / 共44页
Java程序设计及应用开发第4章-封装与类课件_第2页
第2页 / 共44页
Java程序设计及应用开发第4章-封装与类课件_第3页
第3页 / 共44页
Java程序设计及应用开发第4章-封装与类课件_第4页
第4页 / 共44页
Java程序设计及应用开发第4章-封装与类课件_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《Java程序设计及应用开发第4章-封装与类课件》由会员分享,可在线阅读,更多相关《Java程序设计及应用开发第4章-封装与类课件(44页珍藏版)》请在金锄头文库上搜索。

1、第第4 4章章 封装与类封装与类利用数据抽象和数据隐藏技术创建类创建和使用对象对属性和方法进行访问方法的重载构造方法及其使用this引用的用法static方法和属性的使用类的组合方法包的创建和使用本章知识点本章知识点面向过程面向过程面向过程的程序设计中,问题被看作一系列需要完成的功能模块,函数(泛指高级语言实现功能模块的实体)用于完成这些任务,解决问题的焦点是编写函数,函数是面向过程的,它关注如何依据规定的条件完成指定的任务。在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问(每个函数还可以具有它们自己的局部数据),这种数据和对数据的操作相分离的结构很容易造成全局数

2、据在没商量的情况下被改动,因而程序的正确性不易保证。面向对象面向对象面向对象的程序设计将数据和对数据的操作行为封装在一起,作为一个相互依存、不可分割的整体-类。类中的大多数数据只能为本类的行为使用,类会提供公开的外部接口与外界进行通信。类是抽象的数据类型,用类创建对象。程序的执行,表现为一组对象之间的交互通信。对象之间通过公共接口进行通信,从而完成系统功能。面向对象的程序模块间关系简单,程序的独立性高、数据安全。面向对象的显著特点包括:封装性、继承性和多态性。封装:把对象的属性和操作结合为一个独立的整体,并尽可能隐藏对象的内部细节。“封装”的两个含义把对象的全部属性和全部服务结合在一起,形成一

3、个不可分割的独立单位实现“信息隐蔽”,尽可能隐藏对象的内部细节,对外界形成一个边界,只保留有限的外部接口与外界进行联系。4.1 4.1 封装的意义封装的意义类作为一个抽象的数据类型,用来描述相同类型的对象。面向对象编程就是定义这些类。4.2 4.2 定义定义类类“抽象”是面向对象设计中的重要环节。面向过程程序设计:自顶向下,逐步求精面向对象设计:从设计类开始,然后向类中添加方法面向对象的思维方式:以对象为中心,分析对象的行为、状态,抽取出类的设计。4.2.1 4.2.1 面向对象的面向对象的分析分析有一个酒店,酒店有若干客房,向客户提供查询、有一个酒店,酒店有若干客房,向客户提供查询、入住、退

4、房等功能。入住、退房等功能。4.2.1 4.2.1 面向对象的分析面向对象的分析名词对象动词对象的行为酒店酒店 客房客房 客户客户查询查询入住入住退房退房1定义类的语法格式类的修饰符 class 类名 extends 父类名 /类体4.2.2 4.2.2 使用使用classclass定义定义类类【例4-1】定义一个酒店类Hotel。(1)类的访问控制符(2)数据成员(成员变量):记录对象性质和状态的变量(3)数据成员的set和get方法(4)构造方法4.2.2 4.2.2 使用使用classclass定义类定义类1. 数据成员 修饰符 数据类型 成员名=默认值;例:privateprivate

5、 String hotelName; privateprivate String rooms;4.2.2 4.2.2 使用使用classclass定义类定义类数据类型关键字缺省数值布尔型booleanfalse字符型charu0000字节型byte0短整型short0整型int0长整型long0浮点型float0.0F双精度型double0.0D引用类型类、接口null2. 方法一般是对类中的数据成员进行操作数据访问公共接口:如果类中的数据成员是private型的,则往往定义public的方法来设置数据成员的值或读取数据成员的值4.2.2 4.2.2 使用使用classclass定义类定义类3

6、. 构造方法构造方法名与类名相同构造方法一般用于初始化类的对象创建类的对象时,new运算符为该对象分配内存,并调用构造方法来初始化该对象如果一个类中未定义构造方法,则编译时系统会自动提供一个缺省的无参的构造构造方法,其方法体为空。 public 类名( ) 至少写一个无参的构造方法this区分成员变量和方法的局部变量this()调用本类的其他构造方法4.2.2 4.2.2 使用使用classclass定义类定义类对象是类的一个实例类是抽象的,对象是具体的酒店:类某个酒店:对象4.3 4.3 对象和对象和引用引用对象:通过new关键字调用某个构造方法创建,为该对象分配内存空间,并按照构造方法的方

7、法体对对象的数据成员赋初值,创建好的对象在堆内存中。引用:Java不允许直接访问堆内存中的对象,只能通过对象的引用变量操作该对象,引用变量在栈内存中4.3.1 4.3.1 对象和引用的对象和引用的关系关系【例】酒店问题中的对象和引用。4.3.1 4.3.1 对象和引用的关系对象和引用的关系垃圾回垃圾回收收机制机制this:代表一个引用,指向正在调用该方法的当前对象。4.3.2 this4.3.2 this引用引用hotel.setHotelName(MiniStarwood);publicpublic voidvoid setHotelName(String hotelName) thisth

8、is.hotelName = hotelName;【例4-2】设计swap()方法交换两个Hotel的对象。4.4 4.4 方法的参数方法的参数传递传递交换引用变量【例4-2】设计swap()方法交换两个Hotel的对象。4.4 4.4 方法的参数方法的参数传递传递交换引用变量指向的数据当在类中声明一个成员时,可以指定它是为一个类的各个对象各自拥有(实例成员),还是为一个类的所有对象共享(类范围的成员)。类范围的成员称为静态成员,以关键字static声明。 4.5 4.5 关于关于staticstaticstatic数据成员:为类的对象所共享的数据static方法:工具方法,不必创建对象直接使

9、用类名即可调用。Math.PIMath.random()Math.sin()4.5.1 static4.5.1 static成员成员虽然static成员也可以通过对象来引用,但是,绝对不鼓励这个方式。强烈建议使用类名类名. .成员成员的形式进行存取,以区别于非static成员。在static方法中不允许使用非static成员在非static方法中既可以使用非static成员,也可以使用static成员4.5.1 static4.5.1 static成员成员生命周期【例4-3】定义含有static数据成员的Person类。publicpublic classclass Person public

10、public staticstatic String nationalitynationality=Chinese; /static成员 private private String name; /非static成员publicpublic staticstatic String getNationality() returnreturn name+:+nationality; /static方法访问非static成员,报错报错publicpublic staticstatic voidvoid setNationality(String nationality) /static方法访问sta

11、tic成员Person.nationality = nationality; publicpublic voidvoid sayHello() /非static方法可以引用static成员System.out.println(hello,+nationality+!); publicpublic staticstatic voidvoid main(String args) newnew Person().sayHello(); /创建Person类的匿名对象调用sayHello方法4.5.1 static4.5.1 static成员成员【练习】编写一个学生类,包括学号、姓名、性别、年龄和记录

12、学生总数的数据成员。(1)编写合理的重载构造方法。(2)编写各数据成员的set、get方法。(3)在测试类中创建学生数组存储学生对象,打印数组中每个学生的信息和当前学生总数。4.5.1 static4.5.1 static成员成员数据成员/局部变量?数据成员:属于每个对象/属于类?方法局部变量/代码块局部变量?数据成员存在于堆内存中,其释放由Java的垃圾回收机制控制),导致更大的内存开销;同时也扩大了变量的作用域,使程序的内聚性降低(软件设计的基本原则是高内聚、低耦合)4.5.2 4.5.2 变量的使用变量的使用规则规则代码段1:publicpublic classclass TestSco

13、pe1 staticstatic intint i; / 定义一个类数据成员作为循环变量publicpublic staticstatic voidvoid main(String args) forfor(i=0; i10; i+)System.out.println(i);4.5.2 4.5.2 变量的使用规则变量的使用规则【例4-4】变量的使用规则示例。代码段2:publicpublic classclass TestScope2 publicpublic staticstatic voidvoid main(String args) intint i; / 定义一个方法局部变量做循环变

14、量forfor(i=0; i10; i+)System.out.println(i);4.5.2 4.5.2 变量的使用规则变量的使用规则代码段3:publicpublic classclass TestScope3 publicpublic staticstatic voidvoid main(String args) forfor(intint i=0; i d:java_source javacjavac d . Hotel.java d . Hotel.java参数1“-d”:指定编译时在文件系统中创建与包对应的文件夹结构,必须使用。参数2:指定类文件(包结构+class文件)的存储位

15、置。该参数由程序设计者按需指定。参数3:指定被编译的源文件。一定要保证按照路径可以找到被编译的源文件。2执行完整的类名:包名.类名执行class文件在当前路径下可以按照包名结构找到被执行的类文件必须使用完整的类名4.6.3 4.6.3 含包定义的类的编译及执行含包定义的类的编译及执行组合关系:“has a”,一个类的成员可以是其他类的引用。“HAS-A”关系体现了OO设计中类的专属性,类的专用化程度越高,在其他应用中就越可能被复用,OO设计不提倡用单独的类来完成大量不相关的操作。组合是OO设计中大量存在的类间关系。4.7.1 4.7.1 类的设计类的设计组合关系组合关系4.7.1 4.7.1 类的设计类的设计组合关系组合关系本章本章思维导思维导图图

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号