java面向对象程序设计课件.ppt

上传人:灯火****19 文档编号:135178017 上传时间:2020-06-13 格式:PPT 页数:37 大小:106KB
返回 下载 相关 举报
java面向对象程序设计课件.ppt_第1页
第1页 / 共37页
java面向对象程序设计课件.ppt_第2页
第2页 / 共37页
java面向对象程序设计课件.ppt_第3页
第3页 / 共37页
java面向对象程序设计课件.ppt_第4页
第4页 / 共37页
java面向对象程序设计课件.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《java面向对象程序设计课件.ppt》由会员分享,可在线阅读,更多相关《java面向对象程序设计课件.ppt(37页珍藏版)》请在金锄头文库上搜索。

1、第四章类和对象 教学目标 理解数据抽象和数据隐藏创建类能够创建和使用对象能够控制对实例变量和方法的访问方法的重载构造函数的使用理解this引用的用法理解Java的垃圾收集机制static方法和域的使用类的组合包的创建和使用 4 1面向对象程序设计的思想 4 1 1OOP思想4 1 2用类实现抽象数据类型 时钟类4 1 3类成员 构造函数 方法和域 4 1 1OOP思想 面向对象编程技术将数据及对数据的操作封装在一起而形成了类 类是描述相同类型的对象集合 面向对象编程 object orientedprogramming OOP 就是定义这些类 类作为抽象的数据类型用于创建类的对象 程序的执行

2、表现为一组对象之间的交互通信 对象之间通过公共接口进行通信 从而完成系统功能 对象的公共接口是该对象的应用程序编程接口 ApplicationProgrammingInterface API 把对象的内部详细信息隐藏起来 使得对象变得抽象 将这种技术称为数据的抽象化 Java语言是完全面向对象的语言 程序的结构由一个以上的类组成 所有的过程都被封装起来 并将它们称之为方法 4 1 2用类实现抽象数据类型 时钟类 类作为一种抽象的数据类型 封装了对象的数据属性和动态行为 被用来定义类的对象 下面我们将通过一个具体的实例来理解什么是类 如何定义类 创建对象和使用对象 时钟类的设计 1 数据属性 时

3、 inthour 分 intminute 秒 intsecond 2 行为 设置时间setTime 显示时间toUniversalString toStandardString 走时 暂时不考虑 4 1 2用类实现抽象数据类型 时钟类 续 例4 1时钟类的实现 该例子包含两个文件Time1 java和TimeTest1 java Time1 java是用于定义时钟类 TimeTest1类是一个用于测试时钟类的包含main方法的主类 在main方法中将创建Time1类的一个对象 并调用对象的公共方法 4 1 2用类实现抽象数据类型 时钟类 续 Time1 java文件的代码如下 importja

4、va text DecimalFormat publicclassTime1extendsObject privateinthour privateintminute privateintsecond publicTime1 setTime 0 0 0 publicvoidsetTime inth intm ints hour h 0 时 分 秒 设置时间 4 1 2用类实现抽象数据类型 时钟类 续 publicStringtoUniversalString toUniversalString方法以24时制格式显示时间DecimalFormattwoDigits newDecimalForma

5、t 00 returntwoDigits format hour twoDigits format minute twoDigits format second publicStringtoStandardString toStandardString方法以12时制格式显示时间DecimalFormattwoDigits newDecimalFormat 00 return hour 12 hour 0 12 hour 12 twoDigits format minute twoDigits format second hour 12 AM PM 以24时制格式显示时间 以12时制格式显示时间

6、 4 1 2用类实现抽象数据类型 时钟类 续 TimeTest1 java文件的代码 TimeTest1 javaimportjavax swing JOptionPane publicclassTimeTest1 publicstaticvoidmain Stringargs Time1time newTime1 Stringoutput Theinitialuniversaltimeis time toUniversalString nTheinitialstandardtimeis time toStandardString time setTime 13 27 6 output n n

7、UniversaltimeaftersetTimeis time toUniversalString nStandardtimeaftersetTimeis time toStandardString time setTime 99 99 99 output n nAfterattemptinginvalidsettings nUniversaltime time toUniversalString nStandardtime time toStandardString JOptionPane showMessageDialog null output 时钟类测试 JOptionPane IN

8、FORMATION MESSAGE System exit 0 创建Time1类的对象time 调用时钟类的toUniversalString 方法 调用时钟类的toStandardString 方法 4 1 2用类实现抽象数据类型 时钟类 续 程序运行的结果为 4 1 3类成员 构造函数 方法和域 定义类的语法格式如下 类的修饰符 class类名 extends父类名 类体 1 域一个类的数据属性由它的成员变量 域field 定义 在类中声明一个域的形式为 域修饰符 类型域名 4 1 3类成员 构造函数 方法和域 续 2 方法方法一般是对类中的数据成员进行操作 如果类中的数据成员是priva

9、te型的 则往往定义一个public的方法来设置数据成员的值或读取数据成员的值 3 构造函数Time1类包含一个构造函数Time1 构造函数的名和类名是一样的 构造函数一般用于初始化某个类的对象 在程序创建Time1类的对象时 new运算符为该对象分配内存 并调用构造函数来初始化该对象 也就是通过调用Time1类的构造函数 在构造函数中给对象的各成员变量赋初值 4 1 3类成员 构造函数 方法和域 续 4 2类的作用域 Java中用于定义类的作用域的修饰符有两个 public 公共作用域 一个具有公共作用域的类在封装它的包外面是可见的 package 包作用域 一个具有包作用域的类只是在封装它

10、的包中是可见的 如果一个类声明的前面没有public关键字 则此类默认为包作用域 例如 classC1 成员 publicclassC2 成员 例如 packageexamplePkg1 classC3 成员 packageexamplePkg2 classC4 成员 4 2类的作用域 续 4 2类的作用域 续 假如在C4类声明的前面加上public 如下所示 packageexamplePkg2 publicclassC4 成员 4 3成员访问控制 成员访问控制是用来控制类中成员的访问范围 由修饰符声明 表4 1列出了常见的成员访问控制修饰符 表4 1成员访问控制修饰符 例4 2成员访问控制

11、示例 4 4方法 4 4 1方法的声明与局部变量4 4 2方法的参数传递4 4 3使用set和get方法4 4 4方法重载 overloading 4 4 1方法的声明与局部变量 方法声明的格式为 修饰符 返回类型方法名 形式参数表 方法体 方法声明中的符号含义 修饰符 方法访问控制常见的有public protected和privated 返回类型 一个方法必须声明其返回类型 如果无返回值 则必须声明其返回类型为void 一个方法可以返回简单数据类型或任何引用类型的值 也可以返回任何类的对象 一个方法通过return语句返回并将返回值紧跟return语句之后 如果一个方法返回类型为void

12、这个方法也必须包含一个return语句 只是在return语句之后不再带有返回值 方法名可以是任何合法的Java标识符 形式参数 当编写一个方法时 要声明该方法所需要的若干参数和这些参数的类型 这是在声明一个方法时 通过列出它的参数表来完成的 参数表指明每个参数的名字和类型 各参数之间用逗号分开 在方法体中 可以直接用这些参数名来引用参数的值 4 4 1方法的声明与局部变量 续 4 4 1方法的声明与局部变量 续 方法体 方法体中包含了实现这个方法具体功能的代码 方法体中声明的变量 只在方法内使用 即它们是该方法的局部变量 如果方法声明的局部变量与封装该方法的类所声明的一个实例变量同名 则在该

13、方法的作用域中 局部变量屏蔽实例变量 若要在该方法中访问被屏蔽的实例变量 可在其名称前加上关键字this和点运算符 形式为 this 变量名 4 4 1方法的声明与局部变量 续 例如 classC1 inti method1 inti 0 intj this i i 10 j 5 实例变量i 局部变量i 通过this i调用实例变量i 取局部变量i的值 4 4 2方法的参数传递 Java的参数传递方式是通过值来传递的 也称为 值传递 对于这种值传递要区分如下两种情况 当方法的参数为简单数据类型时 则将实参的值传递给形参 当方法的参数为复合数据类型 对象 时 则将实参的地址传给形参 4 4 3使

14、用set和get方法 如果类中声明了private成员变量 则只能通过该类的方法来操作这些成员变量 类常常提供公有方法以允许该类的用户设置或者读取private实例变量 例4 3set和get方法的使用 4 4 4方法重载 overloading Java支持方法的重载 方法的重载定义为在一个类中定义多个同名的方法 下面举例说明方法的重载 要注意到重载的方法参数必须有所区别 参数的类型不同 参数的顺序不同 这里是指一个方法有多个不同类型参数的情况 改变参数的顺序 也算是一种区分方法 参数的个数不同 如例子中的三个重载的方法参数的个数分别是一个 两个和三个 4 4 4方法重载 overloadi

15、ng 续 例4 4方法的重载Time3 java文件的部分代码 三个重载的setTime方法publicvoidsetTime inth setTime h 0 0 publicvoidsetTime inth intm setTime h m 0 publicvoidsetTime inth intm ints hour h 0 带有一个参数的setTime方法 带有两个参数的setTime方法 带有三个参数的setTime方法 4 5初始化类的对象 构造函数 构造方法用于为类的新建的对象分配内存空间和进行初始化 如例4 1在Time1类中创建了一个构造函数 不带任何参数 在构造函数中对三个

16、成员变量进行了初始化 构造函数只能在创建对象时用new命令调用 定义必须构造函数时 注意两点 构造方法必须与其类名相同 构造方法没有返回值 但可以有参数 并且可以重载 4 5初始化类的对象 构造函数 续 例4 5举例说明构造函数的重载 Time4 java文件的部分代码 5个重载的构造函数publicTime4 setTime 0 0 0 publicTime4 inth setTime h 0 0 publicTime4 inth intm setTime h m 0 publicTime4 inth intm ints setTime h m s publicTime4 Time4time setTime time hour time minute time second 不带参数的构造函数 带一个参数的构造函数 带两个参数的构造函数 带三个参数的构造函数 带一个参数为对象的构造函数 4 6this this定义为被调用的方法的当前对象的引用 this引用仅能出现在类中的方法中 例4 6this的使用例子说明如何隐式地和显式地使用this引用 例子中SimpleTime类的构造方法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

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