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

下载本文档

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

文档简介

1、1,第四讲 面向对象程序设计 2,讲师:,2,上讲回顾,OOP与PPL 类和对象:逻辑模型和物理实体 new关键字 引用变量的实质 实例字段变量与本地局部变量的区别 类的封装原则,3,1、永远保持数据私有。这是首先需要考虑的最重要的 一点: 2、永远初始化数据。Java并不对本地变量初始化,但 它会初始化对象中的实例字段。但是永远不要依赖 于默认值; 3、不要在一个类中使用太多的基本类型。 4、并非所有字段都需独自的字段访问方法和更改方法 5、用标准形式对类定义。我们总是以下面的次序列出 类的内容: 公开部件;包作用域部件;私有部件 在每一部分内我们列出次序如下: 实例方法;静态方法;实例字段

2、;静态字段 6、把有太多职责的类分解。 7、使类和方法的名字反映它们的职责。,开发中要注意的(类设计技巧),4,本讲目标,掌握类的构造器 掌握包概念和应用 掌握访问控制,5,回顾一下类的组成,class Car String strProvider = “”; int nDoorNumber = 0; int nSpeed = 0; void brake() void speedUp() ; void slowDown() ,6,本讲目标,掌握类的构造器 掌握包概念和应用 掌握访问控制,7,构造器,构造器是类的一种特殊方法,它的特殊性主要体现在以下的几个方面: (1) 构造器的方法名与类名相同

3、 (2) 构造器没有返回类型 (3) 构造器的主要作用是用于构造并初始 化对象 (4) 构造器总是和new运算符一起被调用 (5) 构造器可以有0、1或多个参数 (6) 构造器不能够被类中其它方法显式调 用,8,构造器,class Box double width; double height; double depth; Box() System.out.println(Constructing Box); width = 10; height = 10; depth = 10; double volume() return width * height * depth; ,9,默认构造函数

4、,默认构造函数指没有参数的构造函数 如果编写的类没有构造函数,系统会自动提供一个默认构造函数,它把对应类中所有的实例字段设为默认值,10,带参数的构造函数,class Box double width; double height; double depth; Box(double w,double h,double d) width = w; height = h; depth = d; double volume() return width * height * depth; 调用: Box mybox1 = new Box(10,20,15); Box mybox2 = new Box

5、(3,6,9);,11,什么是重载(overloading)?,在相同的作用域里面,至少有两个方法具有相同的方法名,且参数声明不同就构成了重载。 参数声明不同包括 个数不同 类型不同 顺序不同(列表内的类型不完全相同) 不建议使用顺序不同的重载。,12,重载构造函数,Java 为每一个类自动提供缺省构造函数 一旦创建了自己的构造函数,缺省的构造函数将不复存在。 重载构造函数提供了一组创建对象的方式,可以根据需要决定是否带初始参数。,public class constructOverload int x; constructOverload() x=0; System.out.println(

6、不带参数的构造函数); constructOverload(int x) this.x=x; System.out.println(带一个参数的构造函数); ,13,重载机制实现原理,编译器列举所有同名方法 检查各方法中提供的参数类型 选择调用最佳匹配方法: 如无法找到,或找到多个方法匹配,报告错误,14,构造函数的规则(一):,构造函数能够使用任何方法修饰符,包括private。 构造函数名称必须与类名相同 构造函数一定不能有返回类型 让方法与类具有相同的名称是合法的(但是愚蠢的),但是,这并不能使它成为一个构造函数。如果看到返回类型,它就是一个方法,而不是构造函数,15,默认构造函数总是无

7、参数构造函数 显式调用构造函数的唯一方法是从另一个构造函数之内调用。 如果想要无参数构造函数,并且类代码中已包含其他任何构造函数,编译器将不提供无参数构造函数。 如果不在类代码中输入构造函数,编译器将自动生成默认构造函数,构造函数的规则(二):,16,public class Example int a,b; a=11; b=22; public Example() a=10; b=20; ,提问:能编译通过吗?,17,初始化块,Java中有三种初始化属性的方式: 声明中赋值 在构造函数中设置值 初始化块 这种机制并不是必须的,而且也不常见。把初始化代码放在构造函数内显得更为直截了当,18,J

8、ava构造函数执行过程:,初始化所有数据字段为默认值(0、false、null) 按照在类声明中出现的次序依次执行所有实例字段初始化语句和初始化块语句 执行父类构造器主体, 执行被调用的构造器主体 执行构造函数主体,19,本讲目标,掌握类的构造器 掌握包概念和应用 掌握访问控制,20,读者文摘,显卡128位/镭9600系列 艾尔莎、丽台、七彩虹,21,包概念及用途,包就是一组类和接口 Java中,一般将相关的类和接口组织在同一个包中 Java核心包: 1、java.lang 2、java.io 3、java.util 4、java.io 使用包的主要原因:保证类名的唯一性 包的命名规范:公司域

9、名倒写,例如:com.thinkbank.applicationname,22,使用包,import 语句:引入特定包中的类 如果不使用import语句引入特定类,在程序代码中 就要使用完整包名来使用相关类 import javax.swing.*; package语句:将当前类放入指定包中 package com.thinkbank.bookmanager;,23,本讲目标,掌握类的构造器 掌握包概念和应用 掌握访问控制,24,访问控制,类的访问控制 类成员的访问控制,25,访问控制,访问控制:对类成员的访问权限说明,包括实例字段和方法 访问控制有以下四种权限说明: (1) public :

10、对一切可见 (2) 默认(无任何显式说明):对本包可见 (3) protected:对子类和本包可见 (4) private:只对本类可见,26,public,public关键字以及例子,27,private,private关键字以及例子,28,默认访问控制,class test String s; void Print() System.out.println(s); 类,方法,变量都可以没有修饰符。,29,默认修饰符的作用域,同一包内可见。 不同包拒绝访问。,30,protected,继承访问权限 方法,变量可以使用protected修饰符 同一包内可见。 不同包的子类可见。,31,课堂练习,模拟一个简易银行存取款系统 要求:储户信息要求保密 可实现对指定用户的存取款业务 步骤:1、先设计与此应用相关的类; 2、设计与此类相关的实例字段; 3、设计与对应的存取款方法; 4、考虑实际可行性;,32,本讲总结,构造函数的重载:编译时解析绑定 包 四种访问控制,33,课后练习及作业,1、完善图书管理系统类设计 要求:所有实例字段私有,有对应的公共读取方法 2、设计一个学生类 1、包括学生的基本信息:姓名、学号等 2、设计两个构造器 3、实现学生信息的编辑:修改基本信

温馨提示

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

评论

0/150

提交评论