3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块

Slides:



Advertisements
Similar presentations
主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
Advertisements

Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第三讲 面向对象(上).
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目6 通用堆栈.
《 Java开发环境配置》 主讲人:耿力.
Java 2实用教程(第3版)教学课件 主讲教师:张国平
Java程序设计教程 第一讲 Java概述.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
四資二甲 第三週作業 物件導向程式設計.
第4章 类与对象 本章导读 0. 面向对象编程 1. 类声明和类体 2. 类体的构成 3. 构造方法与对象的创建 4. 对象的引用与实体
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
面向对象的程序设计(一).
第二章 JAVA语言基础.
第二部分 Java语言基础篇 第4章 Java语言与面向对象 (之一).
Ch07 介面與多重繼承 物件導向程式設計(II).
JAVA程序设计 (03) JAVA Programming
第三章 控制结构.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
Ch02 視窗Swing套件 物件導向系統實務.
Ch08 巢狀類別 物件導向程式設計(II).
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
2018/11/15 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
Java中的面向对象特性.
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
本單元介紹何謂變數,及說明變數的宣告方式。
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
程式設計實作.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
抽象类 File类 String类 StringBuffer类
CH09 套件 物件導向程式設計(II).
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
Java程序设计 第9章 继承和多态.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
辅导课程十三.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
Ch04 事件處理 物件導向系統實務.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
异常及处理.
第一章 Java语言概述.
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
CH04 視窗中元件排排坐 物件導向系統實務.
C/C++/Java 哪些值不是头等程序对象
JAVA 编 程 技 术 主编 贾振华 2010年1月.
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第二章Java基本程序设计.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
只要功夫深 铁杵磨成针 —— 写在前面的话.
判斷(選擇性敘述) if if else else if 條件運算子.
第 5 章 常用类的使用 伍孝金
第二章 Java基础语法 北京传智播客教育
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
变量定位图形 Java中数据的类型分为四种:基本数据类型、数组类型、类类型以及接口类型。任何常量和变量都一定是上述四种数据类型中的一种。简单数据类型的实例化有两种:变量和常量。 变量名和常量名必须是Java语言中合法的标识符。 常量是在程序运行期间值不改变的量。 变量是在程序运行期间值可通过赋值改变的量,
Presentation transcript:

3.2 Java的类 3.2.1 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块 Java的类库大部分是由SUN公司提供的,叫基础类库(JFC)。根据功能不同,Java的类库被划分为若干个不同的包,每个包中都有若干个具有特定功能和相互关系的类和接口。 包是一种松散的类的集合。同一个包中的类在缺省情况下可以互相访问,为了便于编程和管理,常把需要在一起工作的类放在一个包里。

3.2.2 Java中常用的包 (1) java.lang 包 (2) java.io包 是Java语言的标准输入/输出类库,包含了实现Java程序与操作系统、用户界面以及其他Java程序做数据交换所使用的类。 (3) java.util包 包含了Java语言中的一些低级的实用工具,如处理时间的Date类、处理变长数组的Vector类,栈Stack类、散列表HashTable类等。

(4)java.awt包 是Java语言用来构建图形用户界面(GUI)的类库。 低级绘图操作——Graphics类等 java.awt 图形控件和布局——Container类、 Checkbox类、LayoutManager接口等 界面用户控制和事件响应——Event类 (5)java.applet包 是用来实现在Internet浏览器中运行Java Applet的工具类,其中包含一个非常有用的类java.applet. Applet。 (6) java.awt.event包 是对Event类的一个扩充,可以用不同方式来处理不同类型的事件,并使每个图形界面元素本身可以拥有处理它上面事件的能力。

3.2.3 使用系统类库的方式 (1)继承系统类,在用户程序里创建系统类的子类 3.2.3 使用系统类库的方式 (1)继承系统类,在用户程序里创建系统类的子类 如: public class SjApplet extends Applet (2)创建系统类的对象 如:TextField input= new TextField(6) (3) 直接使用系统类 如:System.out.println() 注意:使用系统类之前,用户程序需要用import语句引入所用到的系统类或系统类所在的包。 如:import java.awt.*; import java.awt.event.*; System:系统类 Out:静态属性 println:方法

3.2.4 创建Java自定义类的方法 定义类就是定义类的属性和服务。类的属性即静态属性,指类内的各项数据;类的服务即成员函数或方法。 语法结构: [修饰符] class 类名 [extends 父类] [implements 接口名] {      类成员变量声明    类方法声明 }

父类 接口名 修饰符 定义类属性,成员变量 定义类方法

(1) 声明类头:关键字class 父类名:跟在extends关键字后,用以说明当前类是已经存在的哪个类的子类。 通过定义继承关系,子类可以获得父类的所有属性和方法,并进一步定义它自己的特殊属性. 接口名:跟在implements关键字后,用以说明当前类中实现了哪个接口定义的功能和方法。 修饰符:说明类的特殊性质,分为访问控制符、抽象说明类和最终类说明符。

(2)声明类体: 定义类的具体内容,包括类的属性与方法 [类的属性]: 可以是简单变量,也可以是对象、数组等其他复杂数据结构。   [类的属性]: 可以是简单变量,也可以是对象、数组等其他复杂数据结构。 声明类属性为简单变量的语法: [修饰符] 变量类型 变量名[=变量初值]; 例:int password; 声明类属性为对象的语法: [修饰符] 类名 对象名[=new 类名(实际参数列表)]; 例: PhoneCard myCard=new PhoneCard ( );   修饰符有访问控制符、静态修饰符static、 最终修饰符final、易失修饰符volatile和 过渡修饰符transient。

[类的方法]: 即成员函数,它规定类属性上的操作,实现类的内部功能的机制,是类与外部交互的窗口。 语法结构: [修饰符] 返回值类型 方法名(参数列表) throws 例外名1,例外名2,... {  方法体;    局部变量声明;        语句序列; }

类中的“变量”概念辨析: (1)成员变量: 在类体变量定义处定义的变量,在整个类内都有效; 成员变量包括实例变量和类变量,用static定义的变量是类变量,也叫静态变量; 所有对象独享实例变量,但共享类变量; 实例变量只能通过对象名访问,类变量既可以通过某个对象名也可以通过类名来访问。 (2)局部变量: 在类的方法中定义的变量,仅在定义它的方法内有效

类中的“方法”概念辨析: (1)实例方法: (2)类方法: 实例方法既可以操作实例变量,也可以操作类变量; 实例方法在创建类对象后才分配入口地址; 实例方法可以被类创建的任何对象访问,必须通过对象来调用;实例方法可以调用其它方法(包括类方法)。 (2)类方法: 用static修饰的方法是类方法,也叫静态方法; 类方法只能操作类变量; 类方法在类被加载到内存后就分配了入口地址; 类方法可以被类创建的任何对象调用,也可以通过类名来调用,类方法只能调用该类的类方法。

本类中方法与变量之间的访问关系 各类之间方法与属性的引用方法 实例方法 类方法 实例变量 类变量 局部变量 √ 各类之间方法与属性的引用方法 实例方法 类方法 实例变量 类变量 用 对象名 √ 用 类名

class PhoneCard //定义一个电话卡类 { long cardNumber; private int password; double balance; String connectNumber; boolean connected; boolean performConnection(long cn,int pw) //方法1,实现连接 if(cn == cardNumber && pw == password ) connected = true; return true; } else connected = false; return false; 类的属性

double getBalance() //方法2,返回余额 { if(connected) return balance; else return -1; } void performDial() //方法2,实现拨号 balance -= 0.5;

3.2.5 创建类的实例对象 创建对象的一般格式: 类名 新建对象名= new 构造函数( ); new是为新建对象开辟内存空间的算符。 3.2.5 创建类的实例对象 创建对象的一般格式: 类名 新建对象名= new 构造函数( ); new是为新建对象开辟内存空间的算符。 构造函数()用来完成对象的初始化。 如:TextField input= new TextField(6); 建立一个名为input、长度为6的文本框。 PhoneCard myCard=new PhoneCard( ); 建立一个名为myCard的电话卡对象。

3.2.6 Java中的构造函数 (1)基本概念 构造函数:用来初始化对象(为其所有静态属性赋初值)的一个特殊方法。 构造函数名与类名相同 构造函数可以有0个或多个参数 特点 构造函数始终和new关键字一起调用 构造函数没有返回值 构造函数一般不能由编程人员显示地直接调用 在创建一个类的新对象时,系统自动调用构造 函数对其进行初始化。

引入构造函数的原因: 1) 满足面向对象程序设计中对象初始化的需要; 2) 提高灵活度,使初始化工作除赋值外有更复杂的操作; 在不定义构造函数时,系统会自动为该类生成一个默认的构造函数。

(2)构造函数的定义 例如,可以为PhoneCard类定义如下的构造函数,初始化它的几个域。 PhoneCard(long cn, int pw, double b,String s) { cardNumber = cn; password = pw; balance = b; connectNumber = s; connected = false; } 可见,构造函数定义了几个形式参数,创建对象的语句在调用构造函数时,需要提供几个类型、顺序一致的实际参数,指明新建对象各域的初始值。 String 不是基本数据类型,而是一个系统定义的类名,每一个字符串变量实际上都是一个字符串对象。

构造函数的调用是在用new运算符创建类对象时由系统自动完成。 定义了构造函数之后,就可以用如下的语句创建并初始化PhoneCard对象: PhoneCard newCard = new PhoneCard (33006655, 6666, 100.0,″300″); 说明: newCard是新建对象名 关键字new通知系统开辟内存单元,创建运算符 第一个PhoneCard说明新对象属于哪个类 第二个PhoneCard用来隐含调用PhoneCard类的构造函数 这个对象的卡号是33006655,密码是6666,金额是100.0,电话卡的接入号码是字符串“300”。 如果用户自定义类时未定义类的构造函数,系统将为这个类缺省定义一个空构造函数,没有形式参数,也没有任何具体语句,不完成任何操作。

例 UsePhoneCard.java 1: public class UsePhoneCard 2: { 3: public static void main(String args[]) 4: { // 创建一个PhoneCard的对象myCard 5: PhoneCard myCard = new PhoneCard(12345678,1234,50.0,″300″); // 调用myCard的方法toString( ), // 把myCard中的各个域数据组合成一段信息在屏幕上输出。 6: System.out.println(myCard. toString( ) ); 7: } 8: }

9: class PhoneCard 10:{ 11: long cardNumber; 12: private int password; 13: double balance; 14: String connectNumber; 15: boolean connected; 16: //构造函数 17: PhoneCard(long cn, int pw, double b,String s) 18: { 19: cardNumber = cn; 20: password = pw; 21: if ( b > 0 ) 22: balance = b; 23: else 24: System.exit(1);

25: connectNumber = s; 26: connected = false; 27: } 28: boolean performConnection(long cn,int pw) 29: { //方法1,实现连接 30: if(cn == cardNumber && pw == password ) 31: { 32: connected = true; 33: return true; 34: } 35: else 36: { 37: connected = false; 38: return false; 39: } 40: }

41: double getBalance( ) //方法2,返回余额 42: { 43: if(connected) 44: return balance; 45: else 46: return -1; 47: } 48: void performDial( ) //方法3 ,拨号扣款 49: { 50: if(connected) 51: balance -= 0.5; 52: }

53: public String toString( ) //方法4,显示卡上的信息 54: { 55: String s = ″电话卡接入号码:″+connectNumber 56: +″\n电话卡卡号:″+cardNumber 57: +″\n电话卡密码:″+password 58: +″\n剩余金额:″+balance; 59: if(connected) 60: return (s + ″\n电话已接通。″); 61: else 62: return (s + ″\n电话未接通。″); 63: } 64: }