当前位置:文档之家› java面向对象程序设计课件

java面向对象程序设计课件


4.1.2 用类实现抽象数据类型:时钟类(续) 用类实现抽象数据类型:时钟类(
程序运行的结果为:
4.1.3 类成员:构造函数、方法和域 类成员:构造函数、 定义类的语法格式如下:
[类的修饰符] class 类名 [extends 父类名] { …… //类体 }
4.1.3 类成员:构造函数、方法和域 (续) 类成员:构造函数、 1.域 . 一个类的数据属性由它的成员变量(域field) 定义。在类中声明一个域的形式为: [域修饰符] 类型 域名;
package(缺省值) 说明包作用域成员,该成员只能在同一包中被使用
例4-2 成员访问控制示例
4.4 方法
4.4.1 4.4.2 4.4.3 4.4.4 方法的声明与局部变量 方法的参数传递 使用set和get方法 方法重载(overloading)
4.4.1 方法的声明与局部变量方法声明的格式为: Nhomakorabea类
第四章 和 对

教学目标
理解数据抽象和数据隐藏 创建类 能够创建和使用对象 能够控制对实例变量和方法的访问 方法的重载 构造函数的使用 理解this引用的用法 理解Java的垃圾收集机制 static方法和域的使用 类的组合 包的创建和使用
4.1 面向对象程序设计的思想
4.1.1 OOP思想 4.1.2 用类实现抽象数据类型:时钟类 4.1.3 类成员:构造函数、方法和域
4.1.2 用类实现抽象数据类型:时钟类(续) 用类实现抽象数据类型:时钟类(
Time1.java文件的代码如下:
时 import java.text.DecimalFormat; public class Time1 extends Object { 分 private int hour; private int minute; 秒 private int second; public Time1(){ setTime( 0, 0, 0 ); } public void setTime( int h, int m, int s ){ hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 ); }
4.1.2 用类实现抽象数据类型:时钟类 用类实现抽象数据类型:
类作为一种抽象的数据类型,封装了对象的数据 属性和动态行为,被用来定义类的对象。
下面我们将通过一个具体的实例来理解什么是类,如何定 义类、创建对象和使用对象。
时钟类的设计:
(1) 数据属性: 时(int hour); 分 (int minute); 秒(int second)。 (2) 行为: 设置时间 setTime() ; 显示时间 toUniversalString() 、 走时 (暂时不考虑);
以24时制格 式显示时间
4.1.2 用类实现抽象数据类型:时钟类(续) 用类实现抽象数据类型:时钟类(
TimeTest1.java文件的代码:
创建Time1类的对象time //TimeTest1.java import javax.swing.JOptionPane; public class TimeTest1 { 调用时钟类的 public static void main( String args[] ){ Time1 time = new Time1(); toUniversalString()方法 String output = "The initial universal time is: " + time.toUniversalString() + "\nThe initial standard time is: " + time.toStandardString(); 调用时钟类的 time.setTime( 13, 27, 6 ); output += "\n\nUniversal time after setTime is: " + toStandardString()方法 time.toUniversalString() + "\nStandard time after setTime is: " + time.toStandardString(); time.setTime( 99, 99, 99 ); output += "\n\nAfter attempting invalid settings: " + "\nUniversal time: " + time.toUniversalString() + "\nStandard time: " + time.toStandardString(); JOptionPane.showMessageDialog( null, output, "时钟类测试", RMATION_MESSAGE ); System.exit( 0 ); } }
4.1.1 OOP思想 思想
面向对象编程技术 将数据及对数据的操作封装在一起而形成了类,类是描述 相同类型的对象集合。 。面向对象编程(objectoriented programming,OOP)就是定义这些类。 类作为抽象的数据类型用于创建类的对象。 程序的执行,表现为一组对象之间的交互通信。对象之间 通过公共接口进行通信,从而完成系统功能。对象的公共 接口是该对象的应用程序编程接口(Application Programming Interface,API),把对象的内部详细信息 隐藏起来,使得对象变得抽象,将这种技术称为数据的抽 象化。 Java语言是完全面向对象的语言,程序的结构由一个以上的 类组成。所有的过程都被封装起来,并将它们称之为方法。
设置时间
4.1.2 用类实现抽象数据类型:时钟类(续) 用类实现抽象数据类型:时钟类(
public String toUniversalString(){ //toUniversalString方法以24时制格式显示时间 DecimalFormat twoDigits = new DecimalFormat( "00" ); return twoDigits.format( hour ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ); } 以12时制格式显示时间 public String toStandardString(){ //toStandardString方法以12时制格式显示时间 DecimalFormat twoDigits = new DecimalFormat( "00" ); return ( (hour == 12 || hour == 0) ? 12 : hour % 12 ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ) + ( hour < 12 ? " AM" : " PM" ); } }
Java的参数传递方式是通过值来传递的, 也称为“值传递”。对于这种值传递要 区分如下两种情况:
①当方法的参数为简单数据类型时,则将实参 的值传递给形参; ②当方法的参数为复合数据类型(对象)时, 则将实参的地址传给形参。
4.4.3 使用 使用set和get方法 和 方法
如果类中声明了private成员变量,则只能通过该 类的方法来操作这些成员变量。类常常提供公有方 法以允许该类的用户设置或者读取private实例变量。 例4-3 set和get方法的使用
[修饰符] 返回类型 方法名([形式参数表]) { …… //方法体 }
4.4.1 方法的声明与局部变量(续) 方法的声明与局部变量(
方法声明中的符号含义: 方法声明中的符号含义: 修 饰 符 : 方 法 访 问 控 制 常 见 的 有 public、protected 和 privated。 返回类型:一个方法必须声明其返回类型,如果无返回值, 则必须声明其返回类型为void。一个方法可以返回简单数据 类型或任何引用类型的值,也可以返回任何类的对象。一个 方法通过return语句返回并将返回值紧跟return语句之后。 如果一个方法返回类型为void。这个方法也必须包含一个 return语句,只是在return语句之后不再带有返回值。 方法名可以是任何合法的Java标识符。 形式参数:当编写一个方法时,要声明该方法所需要的若 干参数和这些参数的类型。这是在声明一个方法时,通过列 出它的参数表来完成的。参数表指明每个参数的名字和类型, 各参数之间用逗号分开。在方法体中,可以直接用这些参数 名来引用参数的值。
4.1.3 类成员:构造函数、方法和域(续) 类成员:构造函数、方法和域(
2. 方法
方法一般是对类中的数据成员进行操作。如果类中的数 据成员是private型的,则往往定义一个public的方法来设 置数据成员的值或读取数据成员的值。
3. 构造函数
Time1类包含一个构造函数Time1(),构造函数的名 和类名是一样的。构造函数一般用于初始化某个类的对象。 在程序创建Time1类的对象时,new运算符为该对象分配 内存,并调用构造函数来初始化该对象,也就是通过调用 Time1类的构造函数,在构造函数中给对象的各成员变量 赋初值。
4.2 类的作用域(续)
相关主题