4封装_Java.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《4封装_Java.pdf》由会员分享,可在线阅读,更多相关《4封装_Java.pdf(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Sun 服务第 4 章封装Sun 服务封装第 4 章 2/80 目标当完成本章后,你应该能够:?定义类?创建并使用对象?定义构造器?理解并使用方法重载?使用 this 关键字?使用 static关键字?使用 public 与 private 关键字?理解并定义枚举类?定义和导入包?使用内部类Sun 服务封装第 4 章 3/80 封装?万事万物皆对象?类?对象?访问权限控制?类与对象?构造对象?方法重载?this 句柄?static 修饰符Sun 服务封装第 4 章 4/80 万事万物皆对象?Everything is object!?数据库需求分析,分析实体、联系例如,学生Student、课程
2、 Course 成绩 SC?对象?物以类聚,人以群分Sun 服务封装第 4 章 5/80 类?类的实例?类的属性?类的方法?定义类Sun 服务封装第 4 章 6/80 类的实例?类的实例:灯泡?类的名称:Light?类的对外接口:开、关、变亮、变暗Sun 服务封装第 4 章 7/80 类的属性?类似于数据库中实体的属性?可表示的状态?例如,要表示帐户,类Account 帐号accountNumber 余额balance 以上均为该类的属性属性是类的静态属性,基本上都是名词Sun 服务封装第 4 章 8/80 类的方法?类的方法:类的动态特性,即本身可操作或提供操作的接口方法主要是现实世界中具体
3、的动作,动词例如,类帐户 Account 查询余额取款存款以上都是该类的方法Sun 服务封装第 4 章 9/80 定义类?类的定义包括两部分:属性 成员变量操作 成员方法,方法?方法在 Java 语言中,所有的方法均属于相应的类,都是成员方法,没有不属于类的全局方法(如 C/C+中的 main()方法)Sun 服务封装第 4 章 10/80 定义类?使用关键字class?类中包括:成员变量成员方法,方法?成员变量和方法均为类的成员?示例:帐户Sun 服务封装第 4 章 11/80 对象?定义了类帐户Account 后,只是对该类别进行了说明,描述了该类有哪些属性,可以进行哪些操作,但是这些都只
4、是定义,还没有一个具体的帐户,也不能进行任何操作,类是抽象的?如何得到类的一个实例呢?对象使用关键字new Sun 服务封装第 4 章 12/80 new?Java 语言的关键字,用于创建指定类的对象?语法:Account ac=new Account();?等价于:Account ac;ac=new Account();?语义:句柄 ac,句柄(handle),引用对象的变量new 真正地创建Account 类的一个对象 表示左边的句柄引用右边的对象Sun 服务封装第 4 章 13/80 运行 Account?在 main()方法中创建Account 类的一个对象ac,输出该帐户的帐号、余额
5、?ac 这个对象的成员变量accountNumber 和 balance 并没有进行明确的初始化,那么程序能够通过编译吗?编译:javac Account.java?运行:java Account Sun 服务封装第 4 章 14/80 变量分类?根据声明的地点,变量可分为:成员变量局部变量?区别:作用域初始化使用方式 Sun 服务封装第 4 章 15/80 变量初始化?局部变量必须明确初始化,否则不能通过编译?成员变量编译器会进行默认初始化成员变量默认初始化Sun 服务封装第 4 章 16/80 成员变量默认初始化Sun 服务封装第 4 章 17/80 访问成员?通过句柄访问对象的成员?成员
6、访问符:点号.前为对象,.后为成员.表示右边属于左边,是左边的成员成员变量、成员方法,二者区分方法?点号.在 HelloWorld.java 中在 Account.java 中Sun 服务封装第 4 章 18/80 面向对象程序设计?类的分析:分析业务中有哪些类?类的设计:分析每个类有哪些属性和操作?类的实现:获取业务细节并实现?在 main()方法中创建对象对象之间进行交互,模拟和完成现实世界中的实际业务Sun 服务封装第 4 章 19/80 访问权限控制?表示访问权限,用于修饰类的成员包括成员变量和成员方法?Account.java 中:private String accountNumb
7、er;private double balance;public String getAccountNumber();public double getBalance();public void deposit(double);public void withdraw(double);Sun 服务封装第 4 章 20/80 访问权限控制修饰符?private 最严格的访问权限只允许本类的成员方法访问?public 最宽松的访问权限任何类的方法均可访问Sun 服务封装第 4 章 21/80 权限设计?如何指定成员的访问权限?成员变量大多数都不是public 可以指定private,然后编写两个p
8、ublic 的访问方法getter/setter?成员方法对外接口,大多数是public 本类的辅助方法,不允许其它类调用,private Sun 服务封装第 4 章 22/80 成员变量访问权限?有两种方法:(1)把成员变量声明为public public String accountNumber;(2)把成员变量声明为private 然后编写两个public 的 getter/setter 方法Sun 服务封装第 4 章 23/80 getter/setterprivate String accountNumber;public String getAccountNumber()retur
9、n accountNumber;public void setAccountNumber(String number)accountNumber=number;Sun 服务封装第 4 章 24/80 使用方式?生产者/消费者?提供者/使用者?第一种方法:Account ac=new Account();/通过赋值来指定帐号ac.accountNumber=“110623998015666”;?第二种方法:Account ac=new Account();/通过成员方法调用来指定帐号ac.setAccountNumber(“110623998015666”);Sun 服务封装第 4 章 25/8
10、0 使用方式的区别?类型检查?权限控制?逻辑判断?业务变化Sun 服务封装第 4 章 26/80 Why getter/setter?更符合现实世界中外因通过内因起作用的客观规律,一个对象的属性发生变化应该是外因和内因共同作用的结果?能够灵活的控制属性的读和修改的访问级别,对象的有些属性只允许使用者读,但不允许使用者修改,只有对象内部才能修改?防止使用者错误地修改属性在方法中通过if 来判断参数是否合法?有助于对象封装,隐藏实现细节Sun 服务封装第 4 章 27/80 判断逻辑主要用在setter 中例如,假定合法的帐号应该是15 位public void setAccountNumber(
11、String number)if(number.length()!=15)System.out.println(“帐号位数不正确!”);else accountNumber=number;Sun 服务封装第 4 章 28/80 类与对象?二者联系密切,但又有所区别?联系:类是对象的模板,对象是类的实例(instance)实例化:从类得到对象,使用关键字new?区别:类是抽象的,对象是具体的对象的各成员变量在内存中有相应的存储空间可以存储值,而类则不然Sun 服务封装第 4 章 29/80 构造对象?从类创建一个对象,其成员变量会被默认初始化,各数据类型有相应的默认值?在实际构造一个Accoun
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 封装 _Java
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内