Java程序设计教程(第2版)ppt.ppt_第1页
Java程序设计教程(第2版)ppt.ppt_第2页
Java程序设计教程(第2版)ppt.ppt_第3页
Java程序设计教程(第2版)ppt.ppt_第4页
Java程序设计教程(第2版)ppt.ppt_第5页
已阅读5页,还剩449页未读 继续免费阅读

下载本文档

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

文档简介

2019/4/19,1,Java程序设计(第2版) Programming in Java,雍俊海 清华大学软件学院 School of Software , Tsinghua University,2019/4/19,2,教材,雍俊海. Java程序设计教程. 北京: 清华大学出版社, 2007.,2019/4/19,3,习题集,雍俊海. Java程序设计习题集(含参考答案). 北京: 清华大学出版社, 2006.,2019/4/19,4,参考文献,本课件的参考文献与下面书的参考文献相同 雍俊海. Java程序设计教程. 北京: 清华大学出版社, 2007. 雍俊海. Java程序设计习题集(含参考答案). 北京: 清华大学出版社, 2006. 雍俊海. Java程序设计. 北京: 清华大学出版社, 2004.,2019/4/19,5,第 1 章 绪论,雍俊海( Jun-Hai Yong) 清华大学软件学院 School of Software , Tsinghua University,2019/4/19,6,本章总体纲要,课程总体介绍 Java简介 开发环境的建立 我会写 Java程序,2019/4/19,7,教学大纲( Syllabus),第1章 绪论 第2章 结构化程序设计 第3章 面向对象程序设计 第4章 数组、字符串、向量与哈希表 第5章 泛型、枚举与for语句的简化写法 第6章 异常处理、递归和单体程序设计方法 第7章 文件与数据流,2019/4/19,8,教学大纲( Syllabus),第8章 Swing图形用户界面程序设计 第9章 小应用程序(Applet) 第10章 编程规范和程序调试 第11章 多线程程序设计 第12章 网络程序设计 第13章 多媒体与图形学程序设计 第14章 数据库程序设计,2019/4/19,9,目标,掌握Java编程基本技能 掌握学习Java的基本方法 能够用Java来解决实际问题 也可以为SCJP做准备,2019/4/19,10,教材,雍俊海. Java程序设计教程. 清华大学出版社, 2007.,2019/4/19,11,参考书,雍俊海. Java程序设计习题集(含参考答案). 清华大学出版社, 2006.,2019/4/19,12,参考书,雍俊海. Java程序设计. 北京: 清华大学出版社, 2004. 戴特尔美. Java大学基础教程(第六版)(英文版). 北京: 电子工业出版社, 2005. Bruce Eckel美. Java编程思想:第3版. 机械工业出版社, 2005. Joshua Bloch美著. 潘爱民译. Effective Java中文版. 北京: 机械工业出版社, 2003. 尉哲明, 李慧哲. Java技术教程(基础篇). 北京: 清华大学出版社, 2002. 董丽. Java 技术及其应用. 北京: 高等教育出版社, 2001. 张洪斌.Java程序设计百事通. 清华大学出版社,2001. 其他参考书参见教材的参考文献,2019/4/19,13,学习方法,课内: 认真听讲 课外: 阅读教材并进行实践 教材和习题集的习题 其他课程的作业 实际的项目 实践是硬道理雍俊海个人观点 答案不一定要马上知道 习题不一定要立即做对,2019/4/19,14,本章总体纲要,课程总体介绍 Java简介 开发环境的建立 我会写 Java程序,2019/4/19,15,为什么不直接采用自然语言?,自然语言: 表达意思常常不够明确 结构常常过于复杂 词汇量大,而且在不断发展 科学前沿,2019/4/19,16,计算机语言,1) 1st GL: 二进制机器语言 2) 2nd GL: 低级语言 (LLL) 汇编语言 3) 3rd GL: 高级语言 (HLL) 4) 4th GL: 比 3rd GL 更接近于自然语言 (?) 面向特定的应用 5) 5th GL: (?) GL (第 X 代计算机语言),2019/4/19,17,为什么不只用第1或2代计算机语言?,软件生产效率: 1) 是否容易编码 2) 易读性 重用, 维护及修改 3) 可移植性 4) 错误检测 5) 结构化程序设计 面向对象程序设计,2019/4/19,18,高级计算机语言 (HLL),1950s: 最早的HLLs 1969: 大约有120种HLLs, 大约有15种被广泛应用 1977: 较广泛使用的大约有81 种HLLs 现在: 大约有2000到 4000种 HLLs.,2019/4/19,19,高级计算机语言举例,图像来自 /CIS/course.des/cis400/,2019/4/19,20,Java历史简介,基于C和C+ 1) 1991:用于智能消费型电子产品的语言 James Gosling, “绿色项目”, Oak - Java 市场需求发展没有预料的快,差一点就要取消这个“绿色项目” 2) 1993: 网络的发展, 挽救了这个项目 为网页增加了“动态的内容”,即动态网页设计 3) 1994: Oak应用于网络, 称为Java 4) 1995: Java正式公布,2019/4/19,21,Java现状,Java现在常用来: 1) 开发大规模的商业运用软件 2) 增强网络服务的功能 3) 开发智能消费型电子产品的应用软件 (例如手机),2019/4/19,22,为什么采用Java语言 特点,简单性:Java的语法比 C/C+简单 网络特性 面向对象 平台无关性/可移植性 Write Once, Run Anywhere? 鲁棒性 安全性 多线程性: 并行程序 解释性,2019/4/19,23,两种类型的Java程序,应用程序(Application) 小应用程序(Applet),2019/4/19,24,本章总体纲要,课程总体介绍 Java简介 开发环境的建立 我会写 Java程序,2019/4/19,25,下载与安装指南,例如, 安装: JavaTM 2 SDK, Standard Edition 版本 操作系统,2019/4/19,26,设置环境变量: path & classpath,假设 Java SDK 安装在 C:j2sdk 设置: path=%path%;C:j2sdkbin classpath= .;C:j2sdklib,2019/4/19,27,下载J2SE的在线帮助文档,例如: 下载 Java 2 SDK在线帮助文档 jdk-6-doc.zip 从: /,2019/4/19,28,总结: 建立Java开发环境,1) 下载J2SE安装程序 2) 运行J2SE安装程序,安装J2SE 3) 设置环境变量: 运行路径(path) 类路径(classpath) 4)下载J2SE的在线帮助文档,2019/4/19,29,本章总体纲要,课程总体介绍 Java简介 开发环境的建立 我会写 Java程序,2019/4/19,30,例 1: J_HelloJava.java(应用程序),/ / / 在控制台窗口中输出: / “Java语言,您好!” 和 / “我将成为优秀的Java程序员!“ / /,2019/4/19,31,通过文本编辑器 (如: UltraEdit) 创建并编写Java源文件,/ 文件名: J_HelloJava.java; 开发者: 雍俊海 public class J_HelloJava public static void main(String args ) System.out.println(“Java语言,您好!“); System.out.println(“我将成为优秀的Java程序员!“); / 方法main结束 / 类J_HelloJava结束,2019/4/19,32,编译 &执行,2019/4/19,33,例 2 : J_HelloApplet.java,Applet 小应用程序 Applet 子类的实例 java.applet.Applet 、javax.swing.JApplet 运行方式 包含小应用程序的HTML文件被打开 运行方法 appletviewer (小应用程序的测试工具) 网页浏览 (IE和Netscape等),2019/4/19,34,例 2 : J_HelloApplet.java,/ / / 在一个网页上显示: / “小应用程序,您好!“ / /,2019/4/19,35,通过文本编辑器 (如: UltraEdit) 创建并编写Java源文件,/ 文件名: J_HelloJava.java; 开发者: 雍俊海 import java.awt.Graphics; import javax.swing.JApplet; public class J_HelloApplet extends JApplet public void paint(Graphics g) g.clearRect(0, 0, getWidth( ), getHeight( ); / 清除背景 g.drawString(“小应用程序,您好!“, 10, 20); / 方法paint结束 / 类J_HelloApplet结束,2019/4/19,36,通过文本编辑器 (如: UltraEdit) 创建并编写HTML文件, 简单招呼小应用程序例程 ,2019/4/19,37,编译源文件 &运行小应用程序,2019/4/19,38,Java程序的工作原理,2019/4/19,39,作业,教材习题1.7 教材习题1.8,2019/4/19,40,本课件使用要求,使用本课件,必须注明引用(具体见下一个幻灯片) 书及课件均可能出现一些错误和缺陷,恳切希望广大读者特别是讲授此课程的老师批评指正,2019/4/19,41,引用声明,本课件来源于(或参考了)下面的书及其课件: 雍俊海. Java程序设计教程. 北京: 清华大学出版社, 2007.,2019/4/19,42,免责声明,请合法使用课件,其用途应当合法有益而且不应对任何人造成任何伤害或损失 同时请注意教材作者及出版社没有对本课件做出任何承诺与保证,2019/4/19,43,参考文献,本课件的参考文献与下面书的参考文献相同 雍俊海. Java程序设计教程. 北京: 清华大学出版社, 2007. 雍俊海. Java程序设计习题集(含参考答案). 北京: 清华大学出版社, 2006. 雍俊海. Java程序设计. 北京: 清华大学出版社, 2004.,2019/4/19,44,谢谢,请多指教,2019/4/19,45,第2章 结构化程序设计,雍俊海( Jun-Hai Yong) 清华大学软件学院 School of Software , Tsinghua University,2019/4/19,46,本章总体纲要,标识符和关键字 数据类型、直接量和变量 运算符 控制结构 结构化程序设计,2019/4/19,47,Java中的标识符,标识符可以用来标识变量名、类名、类中的方法名和文件名等. 标识符组成: (1) 字母, (2)数字, (3)下划线“_” 和 (4)美元符号“$”; 首字符必须是(1) 字母, (2)下划线“_” 和 (3)美元符号“$”; 所有标识符是区分大小写的; 除去关键字、false、true和null;,2019/4/19,48,问题: 是/不是 标识符?,myVariable 9pins MYVARIABLE i a+c testing1-2-3,_myvariable java¨ My Variable $myvariable _9pins Its 猫,2019/4/19,49,Java关键字,具有特殊含义的字符序列 例如: public、 static和class 具有特殊用途,不能作为变量名、方法名和类名,2019/4/19,50,Java关键字(50个),2019/4/19,51,本章总体纲要,标识符和关键字 数据类型、变量和直接量 运算符 控制结构 结构化程序设计,2019/4/19,52,数据类型,2019/4/19,53,变量,变量在计算机内部对应着一个存储单元,而且总是具有某种数据类型:基本数据类型或引用数据类型 变量总是具有与其数据类型相对应的值 每个变量均具有: 名字、类型、一定大小的存储单元以及值 变量名对应内存的位置,2019/4/19,54,Java变量必须属于某种类型,变量值也必须与变量类型相匹配 例如: int studentNumber; / 声明单个变量 double velocity, distance; / 声明多个变量 studentNumber=30; / 给变量赋以整数30 int studentNumber=30;/ 声明变量,并赋初值,2019/4/19,55,变量,图例: int sum = 0; String s = “Hello World!”;,2019/4/19,56,练习,习题2.1,2019/4/19,57,Java直接量,Java直接量包括基本数据类型直接量、字符串(String)直接量和null 布尔(boolean)直接量只有两个:true 和 false c, u0061, u0051 和 u005a 是char直接量. 34是int直接量 1.5, 45.6, 76.4E8和-32.0是double直接量 34L是long直接量. 1.5F, 45.6f, 76.4E8F和-32.0F是float直接量 “Hello World!”是String直接量 null是引用数据类型的直接量 任意引用数据类型的直接量(null),2019/4/19,58,字符(char)直接量(常用的转义字符),b (退格) f (换页) n (换行) r (回车) t (水平制表符(到下一个tab位置) (单引号) “ (双引号) (反斜杠),2019/4/19,59,本章总体纲要,标识符和关键字 数据类型、直接量和变量 运算符 控制结构 结构化程序设计,2019/4/19,60,Java运算符,算术运算符 关系运算符 布尔逻辑运算符 位运算符 赋值类运算符 条件运算符 其他运算符,2019/4/19,61,1. 算术运算符,算术运算符包括:+, -, *, /, +, -, % 没有指数运算 Math.pow(2.0, 3.0); / 2.03.0 整数除法:截去余数 7 / 5 结果为 1 取模:返回余数 7 % 5 结果为 2,2019/4/19,62,问题?,-7 / 5 = -7 % 5 = 7 % -5 = 5.5 % 1.0 =,-1 -2 2 0.5,2019/4/19,63,2. 关系运算符,六个关系运算符: 、=、= 和 != 例如: 1 2; / false 3.5 != 1; / true 51.5 = 23.0; / true 540 = 654; / true 24 = 3*8; / true boolean test1=(10 10); / test1= false;,2019/4/19,64,注意事项,、=只能用来比较两个数值类型数据(numbers含characters)的大小 不能用于Strings、booleans、arrays或其他类型,2019/4/19,65,3.布尔逻辑运算符,六个布尔逻辑运算符: & (逻辑与AND) | (逻辑或OR) (逻辑异或XOR ) ! (逻辑非NOT) 单目运算符, 即只有一个操作数 & (条件与AND) | (条件或OR),2019/4/19,66,短路规则 ( &和| ),如果从第一个操作数可以推断出表达式结果,就不再计算第二个操作数 例如: if (x = 2) ,2019/4/19,67,逻辑运算(&和| ),两个操作数均会被运算 (即不采用短路规则) 用不用短路规则,副作用不同 例如, (birthday = true) | (+age = 65),2019/4/19,68,4. 位运算符,位运算符包括:&、|、和 带符号右移 不带符号右移 越晦涩难懂的,越会被SCJP考到 (?) 移位操作是:先将整数写成二进制形式,然后按位操作,最后产生一个新的数 注意: 只用于整数,2019/4/19,69,5. 赋值类运算符,赋值类运算符包括:=、+=、-=、*=、/=、,2019/4/19,70,6. 条件运算符,条件运算符“? :”的表达式形式为“op1 ? op2 : op3” op1:布尔表达式 例如: int k= ( (i=0) ? 1 : -1);,2019/4/19,71,7. 其他运算符,其他运算符包括:(类型)、.、 、( )、instanceof和new 例如: int a=51; char c=(char)a;,2019/4/19,72,算符优先,不同的运算符具有不同的优先顺序 可以用( )来改变优先顺序或使表达式更容易理解 例如: a + b + c / 3 (a + b + c ) / 3,2019/4/19,73,本章总体纲要,标识符和关键字 数据类型、直接量和变量 运算符 控制结构 结构化程序设计,2019/4/19,74,控制结构,if / else if / else while for do while switch case break continue,2019/4/19,75,控制结构,顺序结构 Java最基本的结构 选择结构 三种类型: if、if/else和switch 循环结构 三种类型: for、while和do/while,2019/4/19,76,if语句,if语句的格式是: if (布尔表达式) 语句 或 if (布尔表达式) 一条或多条语句 例如 if ( grade = 60 ) System.out.println( “Passed“ ); / Here could be a statement block.,2019/4/19,77,if-else语句,if-else语句的格式是: if (布尔表达式) 语句1或语句块1 else 语句2或语句块2 例如: if (grade60) System.out.println(“Passed!“); else System.out.println(“Failed!“);,2019/4/19,78,条件运算符 ( ? : ),( cond ? express1 : express2 ) 例 1 System.out.println(studentGrade = 60 ? “Passed“ : “Failed“); 例2 max = ( a b ? a : b ); if (a b) max = a; else max = b;,2019/4/19,79,多分支选择结构switch语句,switch语句的形式是: switch (表达式) case 值1: 语句组1 break; case 值2: 语句组2 break; case 值n: 语句组n break; default: 语句组(n+1) ,2019/4/19,80,for循环语句,格式: for (表达式1;表达式2;表达式3) 语句或语句块 也可写成: 表达式1; while (表达式2 ) 语句或语句块 表达式3; ,2019/4/19,81,while循环语句,while循环语句格式为: while (布尔表达式) 语句或语句块 当条件(布尔表达式)为true ,则不断地执行语句或语句块 “while” 循环中止条件是布尔表达式变为false 如果布尔表达式一开始就为false,则不执行循环体,2019/4/19,82,do/while循环语句,先执行,后判定条件 即循规环体至少执行1次 格式 do 语句或语句块 while (布尔表达式); 好的编程风格:总是以“ ”引导循环体,即使语法上并不需要,2019/4/19,83,本章总体纲要,标识符和关键字 数据类型、直接量和变量 运算符 控制结构 结构化程序设计,2019/4/19,84,结构化程序设计,结构化程序设计 = 数据 + 操作 + 流程控制 + 结构化程序设计方法,2019/4/19,85,流程控制,顺序结构 Java中的最基本结构 选择结构 if、if/else 和 switch 循环结构 while、do/while 和 for,2019/4/19,86,结构化程序设计方法,只采用单输入/单输出的控制结构,2019/4/19,87,作业,习题2.2 习题2.5 习题2.8 习题2.10,2019/4/19,88,本课件使用要求,使用本课件,必须注明引用(具体见下一个幻灯片) 书及课件均可能出现一些错误和缺陷,恳切希望广大读者特别是讲授此课程的老师批评指正,2019/4/19,89,引用声明,本课件来源于(或参考了)下面的书及其课件: 雍俊海. Java程序设计教程. 北京: 清华大学出版社, 2007.,2019/4/19,90,免责声明,请合法使用课件,其用途应当合法有益而且不应对任何人造成任何伤害或损失 同时请注意教材作者及出版社没有对本课件做出任何承诺与保证,2019/4/19,91,参考文献,本课件的参考文献与下面书的参考文献相同 雍俊海. Java程序设计教程. 北京: 清华大学出版社, 2007. 雍俊海. Java程序设计习题集(含参考答案). 北京: 清华大学出版社, 2006. 雍俊海. Java程序设计. 北京: 清华大学出版社, 2004.,2019/4/19,92,谢谢,请多指教,2019/4/19,93,第3章 面向对象程序设计,雍俊海( Jun-Hai Yong ) 清华大学软件学院 School of Software , Tsinghua University,2019/4/19,94,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,95,面向对象程序设计整体介绍,面向对象程序设计(OOP) 将数据(属性)和方法(行为或功能)封装到类(classes)中 数据与方法常常是紧密相关的 对象(objects): 类的实例对象或类本身 三个基本特性:封装性、继承性和多态性,2019/4/19,96,比较,结构化程序设计 对应的典型的计算机语言, 例如: C 面向操作(action)的 函数(方法)是程序的基本单位 面向对象程序设计 对应的典型的计算机语言, 例如: Java 面向对象(object)的 类(class)是程序的基本单位 方法(函数)被封装在类中 数据也常常被封装在类中,2019/4/19,97,类,类(class)本身也是一种对象 类(class)同时也是实例对象的模板 类(class) 的基本组成:(成员)域和(成员)方法 每个对象:拥有内存存储成员域/方法 静态的成员域/方法属于类 其它成员域/方法属于实例对象,2019/4/19,98,类的定义,类的定义格式如下: 类修饰词 class 类名 extends 父类名 implements 接口名称列表 类体 ,2019/4/19,99,多个类组成的程序,很多Java程序需要多个类完成一项任务 一个文件一般只含有一个类 每个文件的长度一般不要太长 最长一般不要超过2000行,2019/4/19,100,方法定义,与C+程序不同的是: 每个方法都必须隶属于某个类 方法定义的格式: 方法修饰词 返回类型 方法名(方法的参数列表) 方法体 返回类型: 返回数据的数据类型 除了构造方法,一般要求返回类型: 要么为void ,要么为某种数据类型int、byte、float或String 最多只能返回一个值 方法名: 任何一个合法的标识符 参数列表: 用逗号(,)分隔开,2019/4/19,101,返回控制,如果没有值返回: return; / 退出该方法 或者遇到该方法的最后一个“”,则退出该方法 如果有值返回: return 表达式; / 退出该方法 返回该表达式的值,2019/4/19,102,构造方法,构造方法在创建新的实例对象时起作用 构造方法通常用来初始化实例对象,例如: 初始化成员域或设置工作环境 构造方法的特点: 与类同名 没有返回值 可以含有多种构造方法(重载) 但必须具有不同的参数列表,2019/4/19,103,默认的构造方法,如果没有显式地定义类的构造方法,则系统会为该类定义一个默认的构造方法。该构造方法不含任何参数。 这个默认的构造方法首先调用其父类的不含任何参数的构造方法,然后初始化新生成的实例的各个成员域变量 默认值: 基本数值类型: 0; boolean: false; 引用数据类型: null 最好自己写构造方法 一旦在类中定义了构造方法,系统就不会再创建这个默认的不含参数的构造方法。,2019/4/19,104,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,105,继承性,继承性 软件重用的一种方法 根据已有的类创建新的类 采纳了旧的类的属性(域)及其行为(方法) 增加了新的能力 子类继承父类 子类增加了新的成员域或新的成员方法 有时可以理解成: (但不绝对!) 子类对象是一种特殊的父类对象,2019/4/19,106,继承性的实现,采用关键字extends public class J_HelloApplet extends Applet / / 类J_HelloApplet结束,2019/4/19,107,关键字: instanceof,运算符: instanceof 例如: if (p instanceof Circle) 上面的条件为 true, 当且仅当引用p所指向的对象是类Circle(或其子类)的实例对象,2019/4/19,108,多重继承,在有些计算机语言中,允许一个类有多个直接父类。这种继承关系称为多重继承 Java不支持多重继承 Java 允许一个类有多个直接父接口(interface),2019/4/19,109,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,110,多态性,优点: 代码重用 简化设计、简化代码 便于程序扩展,2019/4/19,111,多态性的种类,静态的多态性重载 动态的多态性覆盖,2019/4/19,112,静态的多态性(重载),在编译时就能够被识别 针对的是同一个类内的同名方法 例如: public int square(int x) return x * x; public double square(double x) return x * x; ,2019/4/19,113,识别重载方法,识别标志: 参数的个数、类型、数据类型的排列顺序 返回值不能做为识别的标志,2019/4/19,114,动态多态性(覆盖),在程序运行时才被识别 重写父类的方法 要求相同的声明 例如: public class J_HelloApplet extends JApplet public void paint(Graphics g) g.clearRect(0, 0, getWidth( ), getHeight( ); / 清除背景 g.drawString(“小应用程序,您好!“, 10, 20); / 方法paint结束 / 类J_HelloApplet结束,2019/4/19,115,源程序: J_Teacher.Java,/ 文件名: J_Teacher.java; 开发者: 雍俊海 class J_Employee public int m_workYear; / 工作的年限 public J_Employee( ) m_workYear = 1; / J_Employee构造方法结束 public void mb_printInfo( ) System.out.println(“该职工的工作年限为“ + m_workYear); / 方法mb_printInfo结束 / 类J_Employee结束,2019/4/19,116,public class J_Teacher extends J_Employee public int m_classHour; / 授课的课时 public J_Teacher( ) m_classHour = 96; / J_Teacher构造方法结束 public void mb_printInfo( ) System.out.println(“该教师的工作年限为“ + m_workYear); System.out.println(“该教师授课的课时为“ + m_classHour); / 方法mb_printInfo结束 public static void main(String args ) J_Employee a = new J_Employee( ); a.mb_printInfo( ); a = new J_Teacher( ); a.mb_printInfo( ); / 方法main结束 / 类J_Teacher结束,源程序: J_Teacher.Java,2019/4/19,117,编译、运行 & 结果,2019/4/19,118,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,119,包,可以将一组相关的类或接口封装在包(package)里,从而更好地管理已经开发的Java代码 包含组织类与接口的目录结构 方便程序重用,2019/4/19,120,Java 包,Java系统提供了很多已经写好的包 数学计算、输入/输出、字符串操作 尽量利用已有的包、避免重复工作 使用包中类 利用import 语句指定类的位置 例如: import javax.swing.JApplet;,2019/4/19,121,包,包java.lang java.lang.Object java.lang.Math 包java.util java.util.Random,2019/4/19,122,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,123,类成员的封装性,成员(域或方法)的访问控制方式: 1) public 2) private 3) protected 4) default(缺省方式),2019/4/19,124,成员的访问控制方式: public,则该成员可以被任何类中的方法访问 表明对外开放的方式 少量(或者没有) public 域 部分 public 方法,2019/4/19,125,成员的访问控制方式: private,目的: 隐藏具体的实现细节 只有同一个类的成员方法才能访问私有成员 域常常是private 采用 public “get” 方法读取数据 采用 public “set”方法写数据,2019/4/19,126,成员的访问控制方式: protected,介于public 和private之间 同一个包内的所有类的所有方法都能访问该成员 如果不在同一个包内的类的方法要访问该成员,则该类必须是该成员所在的类的子类,2019/4/19,127,成员的访问控制方式: default (缺省方式),只有在同一个包内的类的方法才能访问该方法,2019/4/19,128,类成员封装性总结,2019/4/19,129,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,130,abstract,Java允许定义抽象(abstract)的类和方法 抽象(abstract)的方法可以只提供方法的头部,但不提供实现的部分 抽象(abstract)的方法只能是抽象(abstract)类中的方法 例如: public abstract class J_Vehicle public abstract class J_Shape public abstract void fuel(); public abstract void mb_draw(); ,2019/4/19,131,关键字: static,静态的(static)域和静态的(static)方法实际上隶属于类对象 静态的(static)域 示例: System.out 静态的(static)方法 示例: main( ) 示例: Math.sqrt( ) public static double sqrt(double a),2019/4/19,132,关键字: final,可以修饰的对象: final 域 final 方法 final 类,2019/4/19,133,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,134,接口(interface),接口(interface)就象是一种特殊的类 成员方法: abstract 成员域: final和static 接口(interface)中所有的方法和域必须都是 public的 每个接口一般定义在一个.java 文件中,2019/4/19,135,示例,例1: 通过接口定义一些常量 public interface J_Constants public static final int ONE = 1; public static final int TWO = 2; public static final int THREE = 3; / 接口J_Constants结束 例2: interface J_Shape public abstract void mb_draw(Graphics2D g); / 接口J_Shape结束,2019/4/19,136,注意事项,接口中成员方法的默认方式是 public 和 abstract 接口中成员域的默认方式是public、 static和final,2019/4/19,137,优点,一个类可以继承多个接口 例如:,public class A extends B implements C, D ,2019/4/19,138,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,139,内部类,定义在其它类内部的类称为内部类 内部类有些类似于类的成员域或成员方法,2019/4/19,140,匿名内部类,没有类名 常常用在图形用户界面设计(GUI)中,进行各种事件处理 例如: 鼠标事件、按钮事件和键盘事件等,2019/4/19,141,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,142,变量的作用域范围,作用域范围:程序中能够使用该变量(域与局部变量)的范围 分类: 类作用域范围和块作用域范围,2019/4/19,143,类作用域范围,从类定义的第一个“”开始,到 最后一个“”结束 超出类的范围,类的成员方法不能直接通过它的名称进行访问 例如: 成员域,2019/4/19,144,块作用域范围,从变量声明之处,到该块的最后一个“” 例如: 局部变量与成员方法的参数,2019/4/19,145,值传递示例,/ / / 编写一个程序用来说明 / Java方法调用过程中 / 值传递方式 / /,2019/4/19,146,源程序,/ 文件名: J_Primitive.java; 开发者: 雍俊海 public class J_Primitive public static void mb_method( int a ) System.out.println(“在a+之前方法参数a=“ + a); a+; System.out.println(“在a+之后方法参数a=“ + a); / 方法mb_method结束 public static void main(String args ) int i=0; System.out.println(“在方法调用之前变量i=“ + i); mb_method(i); System.out.println(“在方法调用之后变量i=“ + i); / 方法main结束 / 类J_Primitive结束,2019/4/19,147,编译、运行 & 结果,编译命令为: javac J_Primitive.java 执行命令为: java J_Primitive 最后执行的结果为: 在方法调用之前变量i=0 在a+之前方法参数a=0 在a+之后方法参数a=1 在方法调用之后变量i=0,2019/4/19,148,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,2019/4/19,149,示例,/ / / 编写一个程序用来说明 / 求解矩形和圆面积 / /,2019/4/19,150,按对象进行分解,编写文件J_Shape.java,实现接口J_Shape 编写文件J_Circle.java,实现类J_Circle 继承自接口J_Shape 编写文件J_Rectangle.java,实现类J_Rectangle 继承自接口J_Shape 编写文件J_Area.java,实现类J_Area 计算矩形和圆面积 利用类J_Circle和类J_Rectangle,2019/4/19,151,源程序: J_Shape.java,/ 文件名: J_Shape.java; 开发者: 雍俊海 public interface J_Shape / 计算并返回形状的面积 public abstract double mb_getArea( ); / 接口J_Shape结束,2019/4/19,152,源程序: J_Circle.java,/ 文件名: J_Circle.java; 开发者: 雍俊海 (待续) public class J_Circle implements J_Shape public double m_x, m_y; / 圆心坐标 public double m_radius; / 半径 public J_Circle(double r) m_x = 0; m_y = 0; m_radius = r; / J_Circle构造方法结束,2019/4/19,153,源程序: J_Circle.java,/ 文件名: J_Circle.java; 开发者: 雍俊海 (续) public J_Circle(double x, double y, double r) m_x = x; m_y = y; m_radius = r; / J_Circle构造方法结束 / 计算并返回形状的面积 public double mb_getArea( ) return (Math.PI*m_radius*m_r

温馨提示

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

评论

0/150

提交评论