自考Java语言程序设计(一)串讲笔记(2)

2019-02-15 12:36

(4)default子句可以缺省,但至多出现一次,习惯总是将它写在所有case子句之后,如有必要也可写在某个case子句之前。

(5)如果要使各种情况互相排斥,仅执行一个子句的语句序列,每个子句都需要以break语句结束。

2.2.5 try...catch语句Java语言提供了一种称为异常的机制协助程序报告和处理错误。程序不必用特别的语句对异常预先进行检测,而是当异常真的发生时,系统会抛出一个异常。这时,程序的正常流程被中断,系统会自动进入程序预先设定的异常处理代码块执行。这个代码块或者能尝试从错误中恢复,或者输出必要的信息后终止程序,防 止异常错误的影响进一步扩大。要使程序能完成异常处理,需要给出可能会产生异常的代码块,以及异常发生时处理这个异常的代码块。在Java语言中,用try...catch语句指定可能会发生异常的代码块和错误处理代码块。try...catch语句由try 引导,由try标识一个可能会发生异常的语句块,用catch标识一个处理某种异常的语句块,如果发生这异常,中断程序正常的执行流程,直接执行处理异常的语句块。最后,为了适应各种可能,另用finally标识一个无论try块中语句异常是否发生都会执行的语句块。下面是try...catch语句的一般形式: try{

语句块//执行该语句块,可能会发生异常 }catch(异常类型e) {

异常发生时要执行的语句块 }finally{

无论异常发生与否,都要执行的语句块 }

2.2.6 while语句

while语句用于描述 while循环,while循环结构由一个循环条件和一个作为循环体的语句组成,while循环的语义是当条件成立时重复执行指定的循环体。

2.2.7 do...while语句do...while语句用于描述do...while循环。do...while循环也由一个循环条件和一个循环体组成。do...while循环的语义是重复执行指定的循环体,直至条件不成立结束循环。 注意,最后的分号是do...while循环结构的结束符,不能省略。 2.2.8 for语句

循环之前要为变量置初值,在循环过程中循环变量逐一变化的循环计算结构,称为for循环。for循环包含四部分,为循环有关变量赋初值的表达式1、控制循环条件的表达式2、实现循环计算的语句,称作循环体,以及循环体执行后为有关变量更新的表达式3,for循环控制结构用for语句描述,for语句的一般形式为 for(表达式1;表达式2;表达式3) 2.2.9 嵌套的循环结构

当循环结构的循环体中又包含循环结构时,循环结构就呈嵌套的形式。

2.2.10 循环体中的continue语句和break语句循环体中的continue语句和break语句用于改变循环原有语句执行流程。其中continue语句的作用是结束当前一轮循环(跳过本轮循环的剩余语句),直接进入下一轮循环。continue语句出现在for循环中,跳至表达式3的计算,更新循环变量。continue语句出现在while和do-while循环中,跳至循环条件的计算和测试。break语句的作用是从循环体内跳出至循环的后继语句,即强行中断当前循环。 2.2.11 package语句

在Java语言中,程序包相当于其他语言的函数库。除了系统提供大量程序包外,程序员也可将自己编写的类组成程序包,以便以后像使用系统程序包一样使用它们。程序包声明称为package语句,格式如下: package包名;

package语句必须出现在源程序文件的起始行,表示出现在该文件中的所有类都属于这个程序包。如果有多个源程序的程序包声明使用相同的包名,则表示这些源程序文件中的全部类都属于这个程序包。包名是一个目录名,其中也可以有路径。如果源程序文件的首行没有 package语句,则被默认为是无名包,存于当前目录中。 2.2.12 import语句

import语句用来引入所需要的类。import语句的 格式为:import包名.类名;

importjava.util.Date; //只是引入Date类 如果要从一个包中引入多个类,则可以用通配符“?”。例如,以下代码从java.awt包中引入awt目录层次的所有类。 importjava.awt.?;//从java.awt包中引入所有的类在一个Java源程序中可以有多个import语句,它们必须出现在package语句之后,类的定义之前。

JavaAPI的类被组织成多个包,它们常被Java程序引入使用: java.applet 包含所有支持Javaapplet的类 java.awt 包含抽象窗口工具集中的图形、文本、窗口GUI类

javax.wing 是java.awt包的扩充,包含更丰富的抽象窗口工具集 java.awt.image 包含抽象窗口工具集中的图像处理类 java.lang 包含所有的基本语言类 java.io 包含所有的输入输出类

java.net 包含所有实现网络功能的类 java.util 包含有用的实用库程序类

java.awt.peer 平台无关的GUI工具集界面 3.1 面向对象的基本概念 1.抽象

抽象(Abstraction)是程序设计中最经常使用的技术之一,因为抽象是有效控制程序复杂性的重要手段。程序设计中利用抽象,在面向过程阶段,系统按函数和模块进行设计。在面向对象阶段,利用抽象按类设计。类是目前支持抽象的最好工具。 2.对象

在面向对象语言中,对象的名称用于程序引用对象,对象的成员变量,用于存储对象的状态信息,对象的方法用于描述对象的行为。 3.消息

在程序系统中,对象之间的交互通过相互发送消息 (Message)实现。 4.类

统一给出同类对象的各项属性和能提供的所有行为,避免程序逐一描述同类中的每个对象的所有属性及详细给出对象的每个方法的描述,把同一类对象的所有共同的属性和行为放在一起描述。这种声明对象共有属性和行为的机制称为类。类的声明定义了类的所有对象的共有属性和方法。类是对一组相同对象的描述,类概括了同类对象的共有性质:数据和方法。类的每个 对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。 5.继承

除对象按类划分外,不是同一类的对象可能会在某些相似性。继承(Inheritance)就是在已有类的基础上,扩充属性,或扩充与改写其某些方法,生成新的类,这个

方式称为继承。继承定义的类称为子类,被继承的类称为超类(父类),子类自动含有父类具有的属性和方法。继承具有传递性。超类声明定义共同的特征,子类继承超类的共有特性,还可增加某些特殊性,并可扩充和修正部分行为。采用继承声明定义的子类可以有父类的属性和方法,也可以增加新的属性和方法,并可以对父类的某些方法给出新年的定义。继承的最大好处是对象能按层次划分,并在子类中,与父类相同的属性和方法可以不再重复声明。继承体现了面向对象方法与现实世界中人们的抽象思维方式保持一致。 6.多态性

多态性(Polymorphism)有多种表现形式,这里所说的多态性是指类型适应性多态性,这来自继承,不同继承层次的对象同样的方法有不同的实现。类型适应性多态要求能自动按对象的实际类型正确调用它的方法。类型适应性的多态性需要采用动态联编(DynamicBinding)技术实现。联编是将发送给对象的消息与含执行该消息方法的对象连接起来。当联编在编译和连接阶段实现时,这样的联编过程称为静态联编;当联编推迟至运行时间实现时,该联编过程称为动态联编。动态联编是面向对象语言必须具有的一种能力,是实现上述多态性的技术基础。 3.2 Java的类和对象 3.2.1 类

类是一种类型,类封装对象的属性和方法,是同一类对象的模板。Java程序的主要部分是描述类。 1.类的声明

声明一个新类的基本格式如下:

class类名//声明新类的基本格式 第3章 面向对象编程基础 { 类体 }

其中关键字class引导一个类的声明,类名是一个标识符。类体给出类的成员变量定义和方法定义,类体中不能有独立的执行代码,所有的执行代码只能出现在 方法中。 2.成员变量

成员变量定义的一般形式为:[修饰字] 类型 变量名;

其中,修饰字可以空缺,修饰字用于对成员变量限制其访问权限,成员的访问权限有4种,private、protected、public和友好的,变量的类型可以是任何数据类型,变量的名字是一个标识符。Java中成员变量的名字可以与类的方法的名字相同。 成员变量对类内定义的方法都有效。类的方法也可定义变量,这种变量称为局部变量,局部变量只在定义它的方法中有效。 3.方法

方法给出对象的行为,方法声明的一般形式如下:

返回值类型 方法名(类型 参数名,...,类型 参数名) { 方法体 }

返回值类型声明方法返回值的数据类型。如果方法无返回值,就用void关键字。方法可以没有参数,多个参数用逗号分隔,参数类型可以是任何数据类型。如果某方法中的参数名或局部变量名与类的成员变量名相同,则成员变量在这个方法内暂时被隐藏。如果成员变量在方法内被隐藏,又在方法中要引用成员变量,必须使用this,this表示调用该方法的当前对象。在Java程序中,类的方法可以重载。方法重载是指在一个类中定义多个有相同名字的方法,但这些方法或者参数个数不同或者按顺序参数的类型不同。

4.构造方法

构造方法是一种特殊的方法,这种方法的名与它的类名相同,并且不返回结果,也不写上void关键字。构造方法的作用是创建类的对象,并给对象初始化。构造方法是公共方法,但程序不能显式调用构造方法。程序运行时,当有对象要创建时,由系统自动调用构造方法。如果类的声明没有定义构造方法,系统就增补一个没有参数的默认构造方法。 3.2.2 对象

类被声明后,就可用类创建对象,被创建的对象称为类的实例。程序使用对象需依次经历4个步骤:声明对象、创建对象、使用对象和撤销对象。 1.声明对象

由于类是一种引用类型,声明对象只是命名一个变量,这个变量能引用类的对象。由于对象还没有创建,所以也暂不要为对象分配内存。 2.创建对象

创建对象就是为对象分配内存,为对象分配内存也称类的实例化。一般形式为: new构造方法([参数表])对象创建的两个步骤也可一起完成,一般格式为: 类名 对象名=new构造方法([参数表]) 3.对象的内存模型

Java语言将类型分成基本类型和引用类型两种。第2章介绍的整型、浮点型、字符型等是基本类型,程序引用这种类型的变量,采用直接访问形式。在Java语言中,数组类型和类类型是引用类型。程序访问引用类型的变量采用间接访问方式。程序使用对象有多种情况:或为对象设置状态、或获取对象的状态、或改变对象的状态、或应用对象的某种方法。前三种需要访问对象的成员变量,最后一种要调用对象的方法。程序通过操作符“.”对某对象的成员 变量进行访问和方法调用。一般形式为: 对象名.成员变量

对象名.方法([参数表]) 3.2.3 实例变量和类变量

类的成员变量又分为实例变量和类变量。在定义成员变时,用关键字static修饰的是类变量,定义时未用static修饰的是实例变量。类变量是类的所有对象共享的成员变量,一个类变量在类中只有一个,它属于整个类,而不属于类的某个对象。引用类变量途径有两条,或通过类,或通过对象,格式如下: 类名.类变量名 或 对象名.类变量名

不同对象的实例变量将被分配不同的内存空间。改变类的某一个对象的实例变量值不会影响其他对象的实例变量。类变量的内存只有一处,让类的所有对象共享。从类的任一对象改变类变量,类的其他对象都能发现这个改变。 3.2.4 实例方法和类方法

如同类的成员变量有实例变量和类变量两种一样,类的方法也有两种:实例方法和类方法。在方法定义时,冠以修饰字static的方法称为类方法,没有冠以static修饰字的方法是实例方法。类中的实例方法可以互相调用,并可调用类方法。类方法也能相互调用。但不能直接调用实例方法,除非类方法引入局部对象,然后通过局部对象调用实例方法。另外,类方法能直接引用类变量,不能引用实例变量。实例方法可引用实例变量,也可引用类变量。 实例方法可以访问类变量和当前对象的实例变量。实例方法必须通过对象调用,不能通过类名调用。类方法只能访问类变量,不能够访问实例变量。类方法除了可以通过实例对象调用之外,还可以通过类名调用。 3.2.5 访问权限

访问权限实现访问控制。在类的成员中引入访问权限控制,保护类的成员不在非期望的情况下被引用。在类的声明中,除了类中方法总能访问类的成员变量外,Java语言为其他类的方法访问本类成员变量和方法,提供以下4种访问权限:public:设置没有限制的访问权限,其他类的方法都能访问。private:设置最强的访问权限,其他类的方法都不

能访问。protected:只限子类或者同一包中的类的方法能访问。 <default>:(无修饰,友好的)只允许同一包中的类的方法访问。 1.public(共有)

类的成员变量被设置成public访问权限,则类外的任何方法都能访问它。 2.private(私有)

类的成员变量被设置成private访问权限,则类外的任何方法都不能访问它。 3.protected(受保护)

受保护访问权限是一种公有权限和私有权限之间的访问权限。若在类A的声明中,成员x被定义成是受保护的,则类A的子类和与类A同一包中的别的类可以访问类A的受保护成员x;但对于不是类A的子类且与类A不在同一包中别的类来说,不可访问受保护成员x。 4.友好变量和友好方法

没有修饰的成员变量和方法称为友好变量和友好方法。与保护访问权限比较,如果只允许同一包中的相关类的方法访问,不让类的子类和其他类的方法访问时,可设置成友好变量和友好方法。

3.2.6 继承

继承是面向对象语言的重要机制。借助继承,可以扩展原有的代码,应用到其他程序中,而不必重新编写这些代码。在Java语言中,继承是通过扩展原有的类,声明新类来实现的。扩展声明的新类称为子类,原有的类称为超类(父类)。继承机制规定,子类可以拥有超类 的所有属性和方法,也可以扩展定义自己特有的属性,增加新方法和重新定义超类的方法。 Java语言不支持多重继承,限定一个类只能有一个超类。在子类声明中加入extends子句来指定超类。类声明时,如果缺省extends子句,未指定超类,则该类的超类是系统声明的类java.lang.Object。子类对父类的继承性,Java语言作以下规定:子类自然地继承其父类中不是private的成员变量作为自己的成员变量,并且自然地继承父类中不是private的方法作为自己的方法。超类方法在子类中隐藏称为重写,或置换。当子类中定义的成员变量和超类中的成员变量同名时,超类的成员变量同样会在子类中被隐藏。子类对成员变量的隐藏和方法的重写可以把超类的状态和行为改变为自身的状态和行为。对于子类对象,如果子类重写了超类的方

法,则子类对象调用这个方法时,调用子类方法。如果子类继承了超类的方法(未重写),则会调用超类方法。 1.多态性

面向对象语言规定,子类对象也是超类对象,凡超类对象可以应用的地方,子类对象也适用。 编译时暂不绑定调用哪个方法,必须在运行时才绑定调用方法的技术称为动态联编。而代码根据执行时实际对象的类型不同,调用同名的不同方法,是面向对象语言的一种多态性。解决这种多态性必须采用动态联编技术。重载能由调用时提供的参数个数和参数的类型顺序,在编译时就能确定被调用的方法,这种多态性不需要动态联编技术的支持。 2.多层继承

继承声明的新类,又可被其他类再继承,从而构成多层继承。 3.多层继承中构造方法的调用顺序

构造方法的调用顺序与类的继承顺序一致,从最高层次的超类开始,按继承顺序调用各类的构造方法。如果子类的构造方法要调用超类的构造方法,给从超类继承的成员变量初始化,用代码super(参数)

3.2.7 Java面向对象的其他机制

1.final类、final方法和final变量

final的意义是最终的,用于修饰类、方法和变量,其意思是“不能改变”。禁止改变可能是考虑到“设计”和“效率”两个方面。在类声明之前用final修饰,声明类是final类,final类是不能被再继承的类,即它不能再有子类。用final修饰方法,声明该方法不能被子类的方法覆盖。或是为了给方法“上锁”,防止任何子类改变它的本来含义;或是


自考Java语言程序设计(一)串讲笔记(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Unit 1 Friendship 1教案2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: