《JAVA基础知识.ppt》由会员分享,可在线阅读,更多相关《JAVA基础知识.ppt(231页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JAVA程序设计提提 纲纲n第一章第一章 计算机语言概述计算机语言概述n第二第二章章 JavaJava语言基础语言基础 n第三第三章章 JavaJava面向对象的程序设计面向对象的程序设计n第四第四章章 异常处理异常处理n第五第五章章 JavaJava的可重用类的可重用类n第六章第六章 JDBCJDBC技术技术第一章计算机语言概述n程序设计语言n语言翻译程序n虚拟机、Java虚拟机与Java运行环境nJava程序的运行nJava程序的开发、执行流程程序设计语言从程序设计语言发展过程来分,将程序设计语言分为机器语言、汇编程序设计语言、高级程序设计语言(如Basic语言、Fortran语言、Pas
2、cal语言、Prolog语言、Java语言等等)和数据库管理语言等。n1.1.1机器语言与汇编语言不须翻译即由计算机直接执行的指令叫做机器指令。这些指令的集合叫做机器语言。汇编语言是一种面向机器的程序设计语言,它用符号表示机器指令由于汇编语言仍然没有解决对硬件的依赖,人们希望使用的程序语言能够独立于机器进行数据描述,采用与英语语法相类似的语法结构。这样的程序语言更直观、更方便,便于移植。于是产生了高级语言。高级程序设计语言语言翻译程序如何使高级程序设计语言程序映射成等价的机器语言程序成为关键,语言翻译程序就是起这种作用。程序设计师 println(“Hello”);中高级程序语言代码语言翻译程
3、序语言翻译程序 :00110111 11010010 11100000 11111000 10001001 00100011 11110011 11000011 11000110 :计算机计算机 按语言程序的翻译方式不同,语言翻译程序分为解释型翻译程序和编译型翻译程序。n解释型翻译程序在语言程序翻译时,它读入源程序一句,翻译一句,执行一句,这样反反复复直到最终完成。Basic语言是典型的解释型语言。n编译型翻译程序也叫编译程序,它在翻译语言程序时,加工整个源程序,最终翻译成机器语言,然后交给计算机执行。编译程序有利于目标程序的优化,有利于提高目标程序的运行速度。Fortran语言、C语言、Pa
4、scal语言都是编译型语言。虚拟机、Java虚拟机与Java运行环境编译程序与操作系统和计算机硬件有关,为了提高编译程序的可移植性,提出了虚拟机的理论。虚拟机好似通用的计算机,有自己的指令系统,但本身没有实际的硬件。为了虚拟机代码可以执行,必须有虚拟机实时运行支持系统把虚拟机代码转换成相应硬件机器的代码,然后加以执行。有了虚拟机,编译程序首先把语言程序翻译成虚拟机代码,这样的编译程序可移植性就大大提高了n一种虚拟机,从结构上看它与实际的计算机相似,它的作用是使得一台实际的机器能够运行Java字节码程序。Java字节码是Java源程序编译后的程序,它不能被计算机直接执行,但它可以被所有的Java
5、虚拟机执行。这就是Java字节码程序可以在网络上移植的原因。Java虚拟机(JVM-JavaVirtualMachine)nJava程序必须有自己的运行环境(Java平台)。一个Java运行环境包括实际计算机、适配器、Java虚拟机、Java基本软件和Java应用程序接口。n利用Java语言可以开发两种形式的应用程序:Java应用程序(JavaApplication)和Java小应用程序(JavaApplet)。Java小应用程序是借助浏览器运行的程序。Java程序的运行nJava程序是半编译半解释型语言,其程序的运行过程与编译型和解释型语言都不同n首先,编译程序将Java源程序编译成与实际计
6、算机无关的字节码,然后Java运行系统解释并执行字节码Java程序的开发、执行流程nJava的源程序可以用任何编辑程序(如记事本)进行编辑,然后以纯文本方式存储在文件中,文件必须以Java作为后缀。nJava源程序由Java编译器编译成字节码,存储在以class为后缀的文件中,最后由运行系统解释和执行小结nJava是纯面向对象的程序设计语言,是半编译半解释型语言。Java由于其可移植性、安全性、分布性和高性能性,成为网络开发的主流语言nJDK、JBuilder、eclipse是典型的Java程序开发环境,可视化集成开发环境JBuilder主要适用于开发大型Java软件。第2章Java语言基础n
7、一个简单的Java程序实例n标识符、注释和分隔符n变量和常量n基本类型n运算符及表达式n运算符的优先级n数据类型转换n简单语句和复合语句n控制语句Java程序实例例3-1Point类publicclassPoint/类首部intx;/类体开始 inty;publicPoint()/构造方法,方法名与类名保持相同x=0;/无方法参数列表时,构造原点(0,0)y=0;publicPoint(intX,intY)/构造方法,与上一构造方法不同x=X;/它有参数列表按给定的X、Y值构y=Y;public double distance()/方法distance(),求点到坐标原点的距离 return
8、Math.sqrt(x*x+y*y);/调用Math类的方法sqrt()public void draw()/方法draw(),画点,但未完整实现 /方法体是空语句 public static void main(String args)/main()方法,类运行时的入口System.out.println(“Point Calss!“)/在屏幕上显示Point Calss!/类体结束 上述程序是由类首部、类体两大部分组成,类体描述类的成员变量和方法。类首部classPoint类首部定义类的名字Point。保留字class和类名之间应至少留有一个空格。类体类体位于类名后面左大括号“”和结束类体
9、的右大括号“”之间。类体定义了类的成员变量和方法。标识符、注释和分隔符n标识符、注释和分隔符程序中要用到许多名字,诸如类、变量、方法的名字。标识符就是用来标记它们的名字的。Java标识符的规则是:标识符是以字母、下划线或美元符$开头的字母、下划线、数字的序列。标识符的长度是任意的。标识符分为两类:保留字及用户定义标识符n保留字保留字是Java预定义的标识符,这些标识符都是具有特定的含义。保留字又称关键字。n用户定义标识符 用户定义的标识符用来为程序设计者根据自己的需要定义的类、变量、方法、接口等取名。用户在定义标识符时应注意:1.禁止用保留字作为用户标识符2.遵守先定义后使用的原则。即只有定义
10、了的标识符,才可在语句部分使用。保留字、用户定义标识符n注释用来对程序中的代码作出解释。注释的内容在程序编译时,不产生目标码Java有三种注释形式:1.“/”单行注释。表示从此向后,直到行尾都是注释。2.“/*/“块注释。在“/*”和“*/”之间都是注释,块注释不能嵌套。3.“/*/”文档注释。所有在“/*”和“*/”之间的内容可以用来自动形成文档。注释空格、逗号、分号及行结束符称为分隔符,规定任意两个相邻标识符、数、保留字或两个语句之间必须至少有一个分隔符,以便编译程序能识别。为便于阅读,程序也需要如同自然语言一样,恰当地使用分隔符。值得指出的是,这些分隔符不能互相代用,即该用空格的地方只能
11、用空格,该用逗号的地方只能用逗号分隔符变量和常量-变量n变量变量是用来存放指定类型的数据,其值在程序运行过程中是可变的。Java的变量有两种:局部变量、类成员变量。局部变量是类方法中使用的变量。在使用Java中的每个变量之前,都必须对它进行说明。变量的说明形式如下:类型类型变量名变量名表其中类型说明了变量能存放什么格式的数据。变量名是用来标识该变量的,我们存取变量的内容(变量的值)都是通过变量名来实现的。当说明多个变量为同一类型时,变量名之间用逗号分隔。n变量名在Java中用标识符来表示变量名n变量的类型变量类型定义了变量的值所属的类型Java中的数据类型可分为两大类,一类称为基本数据类型,另
12、一类则是构造数据类型。变量和常量-变量n变量的作用域是指什么范围的程序可以访问该变量变量按作用域分为:类成员变量、方法参数、局部变量、异常处理变量。局部变量是方法体内说明的变量,按局部变量说明的部位,它的作用域可以是整个说明它的方法体,也可以是方法体内一程序段。变量和常量-变量的作用域n常量是指在程序运行过程中其值不变的量n常量在表达式中用文字串表示,它区分不同类型,如n整形常量123、-15n实型常量12.1fn字符常量x,n布尔常量truen字符串类型常量“Test”变量和常量-常量基本类型整数n整型是那些没有小数部分的数据类型,它又分为下列不同的整数数据类型:byte、short、int
13、、long这些不同整数数据类型的意义在于它们所需的内存空间大小不同,这也确定了它们所能表示数值的范围不同。采用不同的整数类型表达同一数值,在存储单元中存储情况是不同的n整数常量有三种表示形式:(1)十进制整数,如33,58,-90(2)八进制整数,以0当头,如010表示十进制的8,-015表示十进制的-13(3)十六进制整数,以0 x或0X当头,如0 x10表示十进制的16,-0X15表示十进制的-21Java缺省整数常量类型为int类型,用4个字节表示如果要表示long类型整数需要在整数后加上后缀L或l,表示它为长整数。例如:1234567L、87654320l整数常量n整型变量类型有int
14、、short、long、byte,由于byte和short类型表示的数范围较小,不常使用。整型变量说明如下:nintanIntVar;longaLongVar=12345shortaShortVar;/说明变量aShortVar是short整型byteaByteVar;/说明变量aByteVar是byte整型整数变量n浮点型是带有小数部分的数据类型,也叫实型nJava包括两种不同的实型:float和doublen一个float类型的变量占用4个字节(32位)ndouble类型的数据则需要8个字节(64位)内存nJava缺省的浮点型常数是double型,如果要表示float型,要在数字后加后缀F
15、或f。如果要表示double型,在数字后加后缀D或d浮点型n浮点型有两种表示法:(1)浮点型十进制表示法(2)浮点型科学表示法浮点型常量n用于表达两个逻辑状态之一的值:true(真)或false(假)。Java不可将布尔类型看做整型值布尔型变量说明如下:booleanaBooleanVar;booleanb=false布尔型nJava的字符使用Unicode编码,用16位来表示,它可以支持世界上所有语言。一般计算机语言通常使用ASCII码,用8位表示一个字符。ASCII码是Unicode码的一个子集,Unicode表示ASCII码时,其高位为0,它是其前255个字符。Unicode字符通常用十
16、六进制。n字符型常量字符常数就是用两个单引号括起来的一个ASCII码字符集中的字符。例如:A;a;2“”称为转义符,意思是转变了其后继字符的含义字符型n字符型变量字符型变量的类型是char,计算机用16位来表示。其值范围0-65535。字符型变量说明如下:charch=a;n字符串常量一个字符串常量是括在两个双引号之间的字符序列。若两个双引号之间没有任何字符,则为空串。Java允许在字符串中出现转义字符运算符及表达式n表达式表达式是由操作数和运算符按一定语法形式组成的符号序列每个表达式经过运算后都会产生一个确定的值。一个常量或一个变量是最简单的表达式n运算符运算符标明对操作数的运算方式。运算符
17、按其要求的操作数个数分为:一元运算符、二元运算符、三元运算符运算符按其功能分为七类:算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋值运算符、其他n算术运算符 算术运算符用于对整型数和实型数的运算。按其要求的操作数的个数分为单元运算符和双元运算符两类n单元运算符 单元运算符+、-可以位与操作数的前面,如+x或-x,也可以位于操作数的后面,如x+、x-;无论单元运算符位于操作数的前面或后面,操作数完成单元运算后,并把结果赋于操作数变量。但是,如把+x或x+整体参加表达式运算时,+x和x-的整体值是不一样的n双元运算符双元运算符+、-、*、/,如两个操作数都是整型,结果是整型。否则是实
18、型。%运算符求整数除的余数,它要求两边操作数均为整型,结果也为整型n关系运算符关系运行算符有=(等于),!=(不等于),),(小于),(大于),=(大于等)及instanceof(对象运算符)七种,整型和实型可以混合出现在关系运算符两边外,在一个关系运算符两边的数据类型应一致,一个关系表达式的结果类型为布尔型,即关系式成立为true,不成立为falsen逻辑运算符逻辑运算符有四个,它们是:!(非),&(与),|(或),(异或)。这些运算符要求的操作数和结果值都是布尔型n位运算符位运算符用来对二进制的位进行运算n赋值运算符赋值运算符“=”用来把右边表达式的值赋给左边的变量,即将右边表达式的值存放
19、在变量名所表示的存储单元中,变量名变量名=表达式;表达式;n条件运算符“?:”,它是Java中唯一的三元运算符。它要求三个操作数,格式为:变量变量=?:第一个操作数必须是布尔表达式,其他两个操作数可以是数值型或布尔型表达式。条件运算符的含义是:当为真时,变量的值为的值,否则为的值运算符的优先级表达式的运算次序取决于表达式中各种运算符的优先级。优先级高的先运算,优先级低的后运算,另外还可用括号“()”改变表达式的运算次序。如果在表达式中有括号(表达式中只使用圆括),又有函数,则优先计算括号中的内容,其次再进行函数运算。同一优先级的运算顺序是从左到右。简单语句和复合语句n变量说明语句变量说明语句用
20、来声明一个变量,变量说明语句的格式为:类型类型变量名变量名1,变量名变量名2;n赋值语句赋值语句是将表达式的值赋给变量,其格式为:变量变量=表达式;表达式;n方法调用语句方法是一系列相关的程序语句的集合,能实现一定的功能。方法调用语句的一般形式为:方法名(参数列表);n空语句空语句是什么都不做的语句,其形式为:;/这是一条空语句n标准输入输出(I/O)输入和输出是Java程序的重要组成部分,它提供了人机交互的手段,它们属于方法调用语句,由于常用,对它们专门介绍。输入是指把需要加工的数据放到计算机中,输出则把计算机处理的结果呈现给用户。Java程序中需要用户提供的信息可通过输入操作来完成,而程序
21、执行的结果需通过输出操作呈现给用户。在Java中,通过Syetem.in和System.out对象分别与键盘和显示器发生联系而完成程序信息的输入和输出。n标准输出System.out对象对象System.out对象包含着多个从键盘输入数据或向显示器输出数据的方法。System.out对象中包含的最常用的方法是println()方法和print()方法。println()方法允许向标准输出设备(显示器)打印一行文本print()方法与println()方法非常相似,两者的唯一不同在于println()方法完成打印后开始一个新行,而Print()方法完成打印后不换行。n标准输入System.in对
22、象System.in对象可在命令行应程序中用于从键盘接收输入n复合语句将相关语句组合在一起就构成复合语句。复合语句括起来,内的每条语句的语法与上面介绍的一样。控制语句n选择语句选择语句提供了一种控制机制,使得程序根据相应的条件去执行对应的语句。nif-else语句(条件语句)if-else语句根据判定条件的真假来执行两种操作中的一种。简单形式if-else语句的语法形式为:if(布尔表达式布尔表达式)语句语句1;else语句语句2;其中,用“”括起的else部分是可选的n若无else部分,语句的执行过程是:执行if语句时,首先对表达式的值进行判断,若布尔表达式的值为true,则程序执行语句1,
23、否则就什么也不做,转去执行if语句的后续语句。n若有else部分,语句的执行过程是:执行if语句时,首先对表达式的值进行判断,布尔表达式的值为true,则程序执行语句1,否则执行语句2。nif-else语句的嵌套if-else语句中内嵌的语句1或语句2又是if-else语句的情况称为if-else语句的嵌套。如:if(布尔表达式布尔表达式1)语句语句1;elseif(布尔表达式布尔表达式2)语句语句2;elseif(布尔表达式布尔表达式m)语句语句m;else语句语句n;nswitch语句nswitch语句根据表达式的结果来执行多个可能操作中的一个,它的语法形式如下:switch(表达式表达式
24、)case常量常量1:语句:语句1break;case常量常量2:语句:语句2break;case常量常量n:语句语句n break;default:缺省处理语句缺省处理语句break;nswitch语句中的每个“case常量:”称为一个case子句,代表一个case分支的入口。n循环语句循环语句的作用是反复执行同一段代码直到满足结束条件。nwhile语句while语句形式如下:whileDO其中:while是while语句的关键字;布尔表达式是循环条件;语句为循环体,当循环体为多个语句时应构成复合语句。while语句执行的过程为:执行while语句时,首先判断布尔表达式的值,当布尔表达式的值
25、为true,则执行循环体,然后再判断条件,直到布尔表达式的值为false,停止执行语句。ndo-while语句do语句while(布尔表达式);do-while语句执行的过程为:先执行一次循环体中的语句,然后测试布尔表达式的值,如果布表达式的值为真,那就继续执行循环体,do-while语句将不断地测试布尔表达式的值并执行循环体中的内容,直到布尔表达式的值为假为止。nfor语句for语句是循环的另一种表示形式。for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句语句for语句中循环控制变量必须是有序类型,常用的有整型、字符型、布尔型。循环控制变量初值和终值通常是与控制变量类型相一致的
26、一个常量,也可以是表达式。循环次数由初值和终值决定。for语句的执行过程如下:(1)按表达式1将初值赋给循环控制变量。(2)按表达式2判断循环是否成立,即判断控制变量的值是否越过终值(未越过终值为条件成立,越过终值为条件不成立),若条件不成立、转步骤(6)。(3)若条件成立,则执行循环体。(4)按表达式3修改控制变量。对于递增型为原控制变量值的后续;对于递减型为原控制变量值的前导。(5)返回步骤(2)。(6)结束循环。nbreak语句对于while、do-while、for来说,正常的退出循环的方法是当测试条件变为false时,但有时即使测试的条件为true,也希望循环立即终止,这时可以用br
27、eak语句实现此功能。break语句的一般语法格式为:break;break语句不能用于循环语句和switch语句之外的任何其他语句中ncontinue语句continue语句只能在循环中使用。它和break语句的区别是continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环语句的执行。小结主要介绍了Java语言的基本要素:标识符的规则、常数规则、局部变量说明格式。介绍了Java的基本数据类型及其运算符和表达式。Java程序设计语言提供多种基本语句:变量说明语句、赋值语句、方法调用语句、空语句。另外还提供了以下几种流程控制语句:分支语句(if-else,s
28、witch-case)、循环语句(while,do-while,for)、转向控制语句(break,continue,label)。第3章Java面向对象的程序设计n面向对象的理论基础n类与对象的基本概念nJava的类n继承n对象的创建及使用nnull,this和supern接口n包面向对象的理论基础面向对象的理论基础n面向对象的概念是近年来广泛被人们接受,这里重要的原因是它以辨证唯物的认识论作为自己的理论基础。现实世界本质上是由物质构成的,物体是物质的载体,各种各样的物体相互联系地构成大千世界。客观存在的物体就是最基本的对象。面向对象分析就是根据人们研究的现实世界中复杂的对象是如何由许多小的
29、、简单的对象组成的原理建立的。面向对象的理论同样认为,不同的物体由共性,共性存在与个性之中。物体的共性是人们对世界认识的抽象,物体的个性又继承了共性。世界上的物体不是一盘散沙,它门之间存在各种各样的联系,这种联系导致物体状态的变化。所有这些,构成了面向对象分析的核心思想。类与对象的基本概念类与对象的基本概念n对象对象在我们的现实生活中很普通的概念。所有的物体都可以被视为对象,大到宇宙,小到原子,都可以将其看作是对象。一个对象具有本身的属性即特征,这些特征决定对象的状态,对象还通过自己的行为,不断改变自己的状态。n类类是具有相同特征的多个对象的模板,它封装了这些对象的所有共同特征。对象是类的实例
30、。类只是一个抽象的模型,利用这个抽象的模型可以构造具体的实例。Java的类的类n类是组成Java程序的基本要素。它描述了一类对象的属性和行为。n一个Java类形式上包含两个部分:类首说明类首说明类体类体n类首说明类首说明的形式如下:修修饰饰符符class类类名名extends父父类类名名implements接接口名列表口名列表类的修饰符有private、public、abstract、final。一个类可以同时有多个修饰符,但是不能有相同的修饰符。当一个类有多个修饰符时,这些修饰符无先后顺序之分,可以任意的顺序排列它们,但是建议按照public、abstract、final的顺序写。n类名是所
31、创建的类的名字,类名可以是任意的Java标识符,根据Java命名的约定,类名的每个有意义的单词的首字母要大写,其余字母小写nextends(继承)保留字用来表明新创建的类继承哪个类,被继承的类称为此类的父类。extends后面只能跟一个父类名称nimplements(实现)用来表明这个类实现了哪些接口,接口名可以有多个n类体类体中定义了该类所有的成员变量和该类所支持的方法类体类体成员变量说明成员变量说明构造方法说明构造方法说明静态初始化说明静态初始化说明方法说明方法说明n成员变量说明及其使用1成员变量说明成员变量的说明类似于方法的局部变量说明,所不同的是,成员变量定义在类中,是类成员的一部分,
32、整个类都可以访问它。Java中成员变量说明形式如下:修饰符修饰符成员变量类型成员变量类型成员变量名成员变量名成员变量的修饰符有以下几种:缺省访问修饰符、public、protected、private、final、static、transient、volatile。2成员变量使用类的成员变量在定义它的类内部,直接通过成员变量名来访问。如从类的外部访问,类变量和类对象变量的使用方法是不同。使用类变量的格式如下:类名类名.类变量名类变量名访问类对象变量的格式如下:类对象名类对象名.类对象变量名类对象变量名n构造方法说明每当由类构造对象时都要调用该类特定的构造方法,在Java中,每个类都至少有一个构
33、造方法。构造方法可以确保用户正确地构造类的对象,同时,构造方法也会对对象作初始化工作。构造方法说明形式如下:构构造造方方法法修修饰饰符符方方法法名名(形形式式参参数数列列表表)throws异常列表异常列表方法体方法体构造方法修饰符与一般方法修饰符相同构造方法不能像一般的方法那样被直接调用,它是在构造类的实例的时候被Java编译器自动调用的。一个类的构造方法可以有多个,它们都具有相同的方法名,即类名。编译器根据参数的类型来决定调用哪个构造方法。构造方法分为缺省的构造方法(不带参数)和带参数的构造方法。(1)缺省的构造方法如果类的定义没有编制构造方法,Java语言会自动为用户提供。这个由Java自
34、动提供的构造方法就是所谓的缺省构造方法。缺省的构造方法确保每个Java类都至少有一个构造方法,该方法应符合类的定义。(2)带参数的构造方法带有参数的构造方法能够实现这样的功能;当构造一个新对象时,类构造方法可以按需将一些指定的参数传递给构造方法。n方法体方法体是实现了这个方法的代码段,也可以是一个分号“;”,表示无方法体,该类没有实现。当且仅当方法的修饰符中有abstract或native时,方法才无方法体。方法体是由各种语句构成的。n方法的调用类方法调用形式如下:类名类名.类静态方法名类静态方法名(实型参数列表实型参数列表)对象方法调用形式如下:类对象名类对象名.类非静态方法名类非静态方法名
35、(实型参数列表实型参数列表)(1)在类方法中不能引用对象变量。(2)在类方法中不能使用super、this关键字。(3)类方法不能调用类中的对象方法。n方法的final修饰符方法的final修饰符表明方法不得被子类覆盖。带有final修饰符的方法称为最终方法。Java的方法除非把说明为最终方法,否则方法是可以覆盖的。Java之所以这样规定,主要是因为Java的纯面向对象特性,它把覆盖当作面象对象的重要特性,给予了最大限度的实现。把方法声明为最终方法有时可增加代码的安全性。n方法说明方法是Java类的一个组成部分。通过类的方法,改变对象的状态。方法说明的格式如下:方法首部说明方法首部说明方法体方
36、法体方法说明分为方法首部说明和方法体两部分。n方法首部说明方方法法修修饰饰符符返返回回值值类类型型方方法法名名(形形参参列列表表)throws异异常列表常列表 形式参数列表是可选的。如果方法没有形式参数,就用一对小括号“()”表示。形式参数列表的形式如下:(类型类型形参名,类型形参名,类型形参名,形参名,)继承继承n通过继承可利用已有的类,并扩展它的属性和方法。这个已有的类可以是语言本身提供的、其他程序员编写的或程序员原来编写的。n类继承语法形式classSubClassNameextendsSupperClassNameextends是继承关键词。SubClassName是新的子类名,Sup
37、perClassName是继承的父类名。父类名是必需的,而且只能有一个。子类可以对父类的方法覆盖或重载。方法覆盖:方法覆盖:子类的方法首部与父类的方法首部相同,但是子类重新实现了该方法。方法重载:方法重载:子类的方法名与父类的方法名相同,但是子类该方法的形式参数列表与父类的方法的形式参数列表不同,并且重新实现了该方法。n如果子类声明了一个与父类的成员变量同名的成员变量,则称父类的该成员变量被隐藏(Hiding),如果子类声明了一个与父类的成员方法同名的成员变量,则称父类的该成员方法被重写(Overriding)。关键字this和super分别用来指明子类和父类中同名的成员变量和方法。当父类的成
38、员变量、子类的成员变量和类中方法使用的局部变量三者同名,或其中两个同名时,可以使用关键字this和super来指定所要使用的变量。n类的层次结构java.lang.Object类是Java所有类的父类。继承关系形成树形层次结构。继承带来最大的好处是类的可重用类的可重用。n抽象类和方法对象高级抽象的需要,希望类只需要说明方法首部,而不需要或不可能说明其方法体,其方法体只能由其子类来完成。使用abstract关键字的抽象类可以达到这个目的。但是,抽象类不能创建任何对象,抽象类只是用来由其子类继承。继承抽象类的子类比它的父类更加具体化、特殊化。n最终类(final类)final修饰符可以定义一个不能
39、被继承的类,即不能再有子类。java.lang.System类就是final类的一个例子。final修饰符通常是出于安全的目的而使用的,因为不能继承final类,人们就不能重载或覆盖它的任何方法。如果允许一个类被继承,其被重载或覆盖的方法可能会被改写。保证某个特定的方法在类层次关系上的某层以后只有一个定义,对于安全性非常关键的类是必要的。n无论是用于修饰变量、方法还是类,final关键字的作用都是一样的:增强代码的安全性。对象的创建及使用对象的创建及使用n三步:对象的说明、对象的实例化和对象的初始化n对象说明对象说明就是类成员变量的说明或局部变量的说明,但是,对象说明强调变量的类型是类,而不是
40、基本类型。对象说明的语法形式为:类名类名对象名;对象名;n对象的实例化和初始化在说明一个对象时,并没有为该对象分配存储空间。对象的实例化完成对象的空间分配,这由new操作完成。构造方法的调用确定了对象的初始状态。对象构造的语法形式为:对象名对象名=new类构造方法名(类构造方法名(实参表实参表););n对象的成员变量及方法的的访问构造了对象,才能访问对象的成员变量及方法。null,this和和super每个类均有这样3个变量值:null、this和super。null为空变量,用于指代空对象,但这个对象不存在相应的实例,如下面的例子:Rectanglerect=null;这个例子变量不创建相应
41、的对象。本质上讲,这类似于创建一个空壳。this引用表示的是对象本身接口接口n接口和类不同,一个接口可以是一个或多个其他它接口的直接继承,也就是说,接口是支持多继承的。同时,一个类也可以实现一个或多个接口,这意味着在此类中必须实现接口中的所有抽象方法。接口和类之间的区别:(1)类只能继承一个类,而对于接口,类可以实现多个接口。(2)对于继承性,类继承了父类的方法:子类可以选择是否覆盖父类的方法。接口的方法没有实现,因此,类必须实现接口中的每个方法。n接口的说明 接口类型的说明类似于类的说明,它由两部分组成:接口说明和接口体。接口说明的形式如下:修饰符interface接口名extends接口序
42、列像类一样,编译好的接口保存在Class文件中n接口说明interface前的修饰符是可选的。当没有修饰符的时候,表示此接口的访问只限于同包的类。如果使用修饰符,则只能用public修饰符,表示此接口是公有的,在任何地方都有可以引用它,这一点和类是相同的。接口说明中的extedns关键词和类说明中的extends一样,用来定义直接的父接口。和类不同,一个接口可以继承多个父接口,当extedns后面有多个父接口时,他们之间用逗号隔开n接口体接口体就是用大括号括起来的那部分。接口体说明接口的成员,包括常量和抽象方法。像类一样,接口可以有两种成员:成员变量和成员方法。接口中所有的成员变量都隐含的是p
43、ublic、static、final的,因此接口中的成员变量都是静态最终变量。在接口中成员变量声明的形式如下:修饰符修饰符类型名类型名变量名;变量名;接口中说明的方法都是抽象方法,其声明的形式为:修饰符修饰符方法返回值类型方法返回值类型方法名(参数列表);方法名(参数列表);小结小结本章主要介绍如何定义和使用类类,类是构造面向对象程序的基本单位。类的使用主要表现为以下两方面:一是通过类创建和使用类的对象;二是用一个类去定义另一个类,即类的继承与引用,而多态性则为类的使用提供了更大的灵活性。应注意区分类与对象这两种个基本概念。而类是抽取了同类对象的共同属性和行为形成的对象或实体的“模版”,类是静
44、态概念。对象是现实世界中实体的描述,对象要创建才存在。有了对象才能对对象进行操作,不再使用的对象由系统撤消。接口接口是面向对象的一个重要思想,利用接口使设计与实现分离,使利用接口的用户程序不受不同接口实现的影响,不受接口实现改变的影响。接口在Java中还起着另一个非常重要的作用,弥补Java只支持单继承的不足,它用来完成多继承的一些功能。Java接口反映了对象分析中较高层次的抽象,为描述相互似乎没有关系的对象的共性提供的一种有效的手段。包包是为了解决一个大的问题、设计较大规模的程序而引入的概念。使用包可以提供一定的访问控制。类、方法缺省访问权限就是可以在它所属的包中被访问。说明为public的
45、类、方法才可以在其他它包中被访问。如果类和方法被说明为protected,则其他它包中只有它的子类才可以访问它们。第第4章章异常处理异常处理n异常类的层次nthrow抛出异常ntry-catch异常处理n正确地使用异常异常类的层次异常在Java中也是作为类的实例的形式出现的。Java中的所有的异常类都是从Throwable类派生出来的。Throwable类 有 两 个 直 接 子 类:java.lang.Error和java.lang.Exception。Error类及其子类主要用来描述一些Java运行时刻系统内部的错误或资源枯竭导致的错误。普通的程序不能从这类错误中恢复,也无法抛出这种类型的
46、错误,这类错误出现的几率是很小的。Exception:在编程中错误的处理主要是对这类错误的处理,如除数为零、数组下标越界等。类Exception是普通程序可以从中恢复的所有规范了的异常的父类。Exception类 又 有 两 个 子 类:RuntimeException和Non_RuntimeException。RuntimeException类处理的错误包括:错误的强制类型转换、数组越界访问、空引用。RuntimeException是程序员编写程序不正确所导致的异常,是在Java系统运行过程中出现的异常,如除数为零等。由于运行时异常可能会出现在程序的任何地方,而且出现的可能性非常大,因而由程
47、序本身去检测运行异常出现与否,将会使程序的开销过大,所以编译器并不要求程序去说明或捕获运行时异常。RuntimeException类的异常的产生是程序员的过失,理论上,程序员经过检查和测试可以查出这类错误。Non_RuntimeException是指可以由编译器在编译时检测到的、可能会发生在方法执行过程中的异常,如找不到指定名字的类或者界面,不是程序本身的错误,如果这些异常情况没有发生,程序本身仍然是完好的。如果程序不能适当地处理可能会引发运行异常的语句,则程序将不能通过编译器的编译。throw抛出异常抛出异常在程序中使用throw语句来抛出异常,该异常可以在该程序中进行捕获、处理,也可以在调
48、用该方法者捕获、处理。throw语句的形式为:throw异常类的实例异常类的实例;抛出异常有这样三步:(1)确定异常类(2)创建异常类的实例(3)抛出异常try-catch异常处理异常处理n利用try-catch语句可以说明抛出异常的部位,以及捕获、处理的办法。trycatch语句形式如下:try语句;语句;/说明抛出异常的部位,该部位含有含有抛出异常的语句,如调用抛出异常的方法。catch(异常类异常类1变量名)变量名)/按按抛出的异常类进行捕获,并加处理catch处理处理catch(异常类异常类2变量名)变量名)/按按抛出的异常类进行捕获,并加处理catch处理处理。finally语句语句
49、当catch紧前面的try块中发生了一个异常,try-catch语句就会自动在try块后面的各个catch块中,找出与该异常类相匹配的参数。当参数符合以下三个条件之一时,就认为这个参数与产生的异常相匹配:(1)参数与产生的异常的属于一个类;(2)参数是产生的异常的父类;(3)参数是一个界面时,产生的异常实现了这一界面。当产生的异常找到了第一个与之相匹配的参数时,就执行包含这一参数的catch语句中的Java代码,执行完catch语句后,程序恢复执行,但不会回到异常发生处理继续执行,而是执行try-catch结构后面的代码。nfinally子句finally语句可以说是为异常处理事件提供的一个清
50、理机制,一般是用来关闭文件或释放其他的系统资源,作为try-catch-finally结构的一部分,可以没有finally语句,如果存在finally语句,不论try块中是否发生了异常,是否执行过catch语句,都要执行finally语句。try-catch-finally语句的形式如下:try/正常执行的代码,可能产生异常.catch(异常类1e)/异常类1的处理代码catch(异常类2e)/异常类2的处理代码catch(异常类ne)/异常类n的处理代码finally/执行清除工作的语句.n(1)try块中的语句没有产生异常。在这种情况下,首先执行try块中的所有的语句,然后执行finall