chapter04 类和对象

上传人:第*** 文档编号:34206568 上传时间:2018-02-21 格式:PPT 页数:42 大小:336KB
返回 下载 相关 举报
chapter04 类和对象_第1页
第1页 / 共42页
chapter04 类和对象_第2页
第2页 / 共42页
chapter04 类和对象_第3页
第3页 / 共42页
chapter04 类和对象_第4页
第4页 / 共42页
chapter04 类和对象_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《chapter04 类和对象》由会员分享,可在线阅读,更多相关《chapter04 类和对象(42页珍藏版)》请在金锄头文库上搜索。

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

2、创建类的对象。程序的执行,表现为一组对象之间的交互通信。对象之间通过公共接口进行通信,从而完成系统功能。对象的公共接口是该对象的应用程序编程接口,把对象的内部详细信息隐藏起来,使得对象变得抽象,将这种技术称为数据的抽象化。,4.1.2 用类实现抽象数据类型:时钟类,下面我们将通过一个具体的实例来理解什么是类,如何定义类、创建对象和使用对象。时钟类的设计:(1) 数据属性: 时(int hour); 分 (int minute); 秒 (int second)。(2) 行为: 设置时间 setTime() ; 显示时间 toUniversalString() 、 toStandardString

3、() ; 走时run() ;,4.1.2 用类实现抽象数据类型:时钟类(续),例4-1 时钟类的实现。 该例子包含两个文件Time1.java和TimeTest1.java。 Time1.java是用于定义时钟类。 TimeTest1类是一个用于测试时钟类的包含main方法的主类,在main方法中将创建Time1类的一个对象,并调用对象的公共方法。,4.1.2 用类实现抽象数据类型:时钟类(续),Time1.java文件的代码如下:public class Time1 extends Object private int hour; private int minute; private in

4、t second; public Time1() setTime( 0, 0, 0 );public void setTime( int h, int m, int s ) hour = ( ( h = 0 ,时,分,秒,设置时间,构造方法,4.1.2 用类实现抽象数据类型:时钟类(续),public String toUniversalString() return hour + : + minute + : + second ; public String toStandardString() return ( (hour = 12 | hour = 0) ? 12 : hour % 12

5、 ) + : + minute + : +second+( hour 12 ? AM : PM ); ,以24时制格式显示时间,以12时制格式显示时间,TimeTest1.java文件的代码:/TimeTest1.javaimport javax.swing.JOptionPane;public class TimeTest1 public static void main( String args ) Time1 time1 = new Time1(); String output = time1对象建立后n24时制格式时间: + time1.toUniversalString() + n1

6、2时制格式时间: + time1.toStandardString(); time1.setTime( 13, 27, 6 ); output += n 用setTime方法( 13, 27, 6 )修改time1对象后+n24时制格式时间: + time1.toUniversalString() + n12时制格式时间: + time1.toStandardString(); Time1 time2 = new Time1(); time2.setTime( 11, 27, 12 ); output += nntime2对象 n24时制格式时间: + time2.toUniversalStr

7、ing() + n12时制格式时间: + time2.toStandardString(); time2.setTime( 99, 89, 99 ); /设置对象time2的值 /显示对象time2的值,创建Time1类的第一个对象并赋给引用变量time1,通过引用变量time1调用第一个Time1对象的的成员方法,创建Time1类的第二个对象并赋给引用变量time2,通过引用变量time1调用第一个Time1对象的的成员方法,4.1.2 用类实现抽象数据类型:时钟类(续),output += n 用setTime方法( 99, 89, 99 )修改time2对象后n24时制格式时间: + t

8、ime2.toUniversalString() + n12时制格式时间: + time2.toStandardString(); JOptionPane.showMessageDialog( null, output, 时钟类测试:建立了两时钟对象, JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); ,程序运行的结果为:,4.1.3 类成员:构造函数、方法和域,定义类的语法格式:类的修饰符 class 类名 extends 父类名 /类体例public class Time1 extends object ,1域一个类的数据属性由它的成

9、员变量(域field)定义。在类中声明一个域的形式为:域修饰符 类型 域名;例: private int hour; private int minute; private int second;,4.1.3 类成员:构造函数、方法和域 (续),定义在类的每一个数据成员都有一个缺省值,类中的数据成员的缺省值,2. 方法(method)方法一般是对类中的数据成员进行操作。如果类中的数据成员是private型的,则往往定义一个public的方法来设置数据成员的值或读取数据成员的值。3. 构造方法(constructor)Time1类包含一个构造函数Time1().构造方法名同类名。构造方法一般用于

10、初始化某个类的对象。在程序创建Time1类的对象时,new运算符为该对象分配内存,并调用构造函数来初始化该对象,也就是通过调用Time1类的构造函数,在构造函数中给对象的各成员变量赋初值。,4.1.3 类成员:构造函数、方法和域(续),4.2 类的作用域,定义类的作用域的修饰符(modifier): public(公共作用域):一个具有公共作用域的类在封装它的包外面是可见的; package(包作用域,缺省值):一个具有包作用域的类只是在封装它的包中是可见的。,类的使用:C1sub1.C21sub1.C22sub3.sub4.C3,例如: public class C1 /成员.class C

11、21 /成员.class C22 /成员public class C3 /成员,4.2 类的作用域(续),例如: public class C1 /成员,4.2 类的作用域(续),package sub1;public class C21 /成员class C22 .,package sub3.sub4;class C3 /成员,4.2 类的作用域(续),假如在P1类声明的前面加上public,如下所示:package sub3.sub4;public class C3 /成员,4.3 成员访问控制,成员访问控制是用来控制类中成员的访问范围,由修饰符声明。表4-1列出了常见的成员访问控制修饰符

12、。,表4-1 成员访问控制修饰符,例4-2 成员访问控制示例,例4-2 成员访问控制示例,public class Time1 extends Object private int hour; / 0 - 23 private int minute; / 0 - 59 private int second; / 0 - 59 public Time1() . public void setTime( int h, int m, int s ) . public String toUniversalString() . public String toStandardString() . ,/T

13、imeTest2.javapublic class TimeTest2 public static void main( String args ) Time1 time = new Time1(); time.hour = 7; /error time.minute = 15; /error time.second = 30; /error ,例4-3 成员访问控制示例2,public class accessModifier private int a; int b; protected double c; public char d; public void setA(int a1) a=a1; class accessModifierTest public static void main( String args ) accessModifier obj = new accessModifier(); obj.setA(1); obj.b = 2; obj.c = 1.5; obj.d=#; ,4.4 初始化类的对象:构造方法,构造方法用于为类的新建的对象分配内存空间和进行初始化.定义必须构造方法时,注意两点:构造方法与类名相同;构造方法没有返回值,但可以有参数,并且可以重载。构造方法只能在创建对象时用new命令调用。,

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

当前位置:首页 > 办公文档 > 解决方案

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