第4章 面向对象(下)_第1页
第4章 面向对象(下)_第2页
第4章 面向对象(下)_第3页
第4章 面向对象(下)_第4页
第4章 面向对象(下)_第5页
已阅读5页,还剩142页未读 继续免费阅读

下载本文档

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

文档简介

第4章面向对象(下)《Java基础案例教程》(第3版)学习目标/Target掌握继承的概念,能够简述继承的概念与特点掌握抽象类和接口的比较,能够简述抽象类和接口的相同点与不同点熟悉多态,能够简述多态的概念和实现基础熟悉内部类,能够简述成员内部类、局部内部类、匿名内部类、静态内部类的特点学习目标/Target掌握super关键字的使用方法,能够在类中使用super关键字访问父类成员和构造方法掌握final关键字的使用方法,能够灵活使用final关键字修饰类、方法和变量掌握方法的重写,能够在子类中重写父类方法掌握抽象类的使用方法,能够定义和使用抽象类学习目标/Target掌握对象类型转换,能够灵活对对象进行向上转型和向下转型掌握Java中异常的处理,能够使用try…catch和finally语句、throw、throws处理异常,并且能够自定义异常类熟悉instanceof关键字的应用,能够使用instanceof关键字判断一个对象是否为某个类或其子类的实例掌握接口的使用方法,能够定义和使用接口章节概述/

Summary在上一章中,介绍了面向对象的基础知识,并对面向对象的三大特性中的封装进行了详细讲解。本章将进一步讲解面向对象的高级特性,如继承、多态等。目录/Contents0102继承抽象类和接口0304多态内部类05异常继承4.14.1.1继承的概念掌握继承的概念,能够简述继承的概念与特点

先定一个小目标!4.1.1继承的概念现实生活中,说到继承,通常会想到子女继承父辈的财产、事业等。Java中的继承,描述的是事物间的所属关系,通过继承,可以使多种事物之间形成一种关系体系。下面看一个例子,假如现在需要定义如下两个类。学生类(属性:姓名、年龄

方法:吃饭、睡觉、学习)老师类(属性:姓名、年龄、薪水

方法:吃饭、睡觉、教书)如果不使用继承,两个类的大量重复信息会导致代码大量重复,臃肿而冗杂,可复用性也较低。4.1.1继承的概念解决方法:利用继承关系将多个类的相同内容抽取到单独的一个类中,抽取出的类被称为父类,而基于父类构建出来的新类被称为子类。通过继承,子类会自动拥有父类的所有非私有属性和方法。继承使用关键字extends来实现,语法格式如下:class父类{……}class子类extends父类{……}4.1.1继承的概念通过案例演示Java如何实现类的继承。案例演示Example01.java源代码4.1.1继承的概念案例的运行结果如下图所示。案例演示4.1.1继承的概念类的继承的注意事项。在Java中,类只支持单继承,不支持多继承。也就是说,一个类只能有一个直接父类。子类可以继承父类的公共成员和受保护的成员,但不能继承私有成员。Java支持多层继承,即类的父类可以继承其他类。例如,C类继承B类,而B类可以继承A类。在Java中,子类和父类是一种相对的概念,一个类既可以是某个类的父类,也可以是另一个类的子类。classA{}classBextendsA{}//B类继承A类,B类是A类的子类classCextendsB{}//C类继承B类,C类是B类的子类掌握方法的重写,能够在子类中重写父类方法4.1.2方法的重写

先定一个小目标!4.1.2方法的重写方法重写又称方法覆盖,重写方法需要定义在子类中定义一个与父类方法名称、参数列表、返回类型完全相同的方法。下面通过一个案例演示方法的重写。Example02.java源代码4.1.2方法的重写案例的运行结果如下图所示。4.1.2方法的重写子类重写父类方法的注意事项。静态方法不能被重写。静态方法属于类而不属于类的实例,因此不能被子类重写。重写方法的访问权限应比父类中被重写方法的访问权限大或者一致。例如,父类方法的访问权限为protected,子类重写该方法时,只能将其访问权限保持为protected或者放宽为public,而不能设置为private。由于父类的私有方法不能被子类继承、因此也无法被子类重写。掌握super关键字的使用,能够在类中使用super关键字访问父类成员和构造方法4.1.3super关键字

先定一个小目标!4.1.3super关键字继承是一种类与类之间的关系,它涉及多个类,每个类都有各自的属性和方法,很有可能出现父类和子类中具有相同成员的情况。因此,当在子类中访问子类或父类的相同成员时,可能会引起混淆。为了解决这个问题,可以在子类中使用super关键字调用父类的成员,还可以用于在子类的构造方法中调用父类构造方法。4.1.3super关键字1.使用super关键字访问父类成员使用super关键字访问父类成员的具体语法格式如下。super.父类成员变量super.父类成员方法(参数列表)4.1.3super关键字案例演示下面通过一个案例演示super关键字访问父类成员的使用。Example03.java源代码4.1.3super关键字案例演示案例的运行效果如下图所示。4.1.3super关键字案例演示子类无法继承父类的构造方法,但是可以在构造方法中使用super关键字调用父类的构造方法。其语法格式与使用this关键字调用同类构造方法的语法格式类似,具体如下:2.使用super关键字调用父类的构造方法super(参数列表)4.1.3super关键字案例演示下面修改文件Example03.java,演示如何使用super关键字调用父类的构造方法。Example04.java源代码4.1.3super关键字案例演示案例的运行结果如下图所示。4.1.3super关键字2.super关键字调用父类构造方法在Java中,每个类的构造方法中都必须调用其直接父类的一个构造方法,以确保父类的初始化工作得到执行。如果没有进行显式调用,程序会隐式调用父类的无参构造方法。如果父类没有无参构造方法,则子类必须显式调用父类的其他构造方法,否则编译器会报错。而且,子类在构造方法中调用父类构造方法应该放在子类构造方法的第一行。。4.1.3super关键字下面修改文件Example04.java,演示程序隐式调用父类的无参构造方法。Example05.java源代码4.1.3super关键字案例演示案例的运行结果如下图所示。4.1.3super关键字this关键字与super关键字在用法和功能上有很多相似之处,都可以调用构造方法、普通方法和属性,但是两者之间还是有区别的。分类区别点thissuper区别属性访问访问本类中的属性,如果本类中没有该属性,则从父类中查找直接访问父类中的属性方法调用本类中的方法,如果本类中没有该方法,则从父类中查找直接调用父类中的方法构造方法调用本类的构造方法调用父类的构造方法相同之处在调用构造方法时,都必须位于构造方法的第一行,并且只能出现一次4.1.4final关键字

先定一个小目标!掌握final关键字的使用,能够使用final关键字修饰类和类的成员。4.1.4final关键字final关键字在Java中的含义是不可改变的或最终的,final关键字可以修饰变量、方法和类,当程序中某个实体不需要被修改、继承或重写时,可以使用final关键字来加以限制。4.1.4final关键字1.使用final关键字修饰类使用final关键字修饰的类不能被继承,这样的类称为最终类,即没有子类。具体语法格式如下。finalclass类名{}4.1.4final关键字下面通过一个案例演示final修饰类时的特点。Example06.java源代码1.使用final关键字修饰类4.1.4final关键字案例的运行结果如下图所示。1.使用final关键字修饰类4.1.4final关键字2.使用final关键字修饰方法使用final关键字修饰的方法不能被重写。在父类中使用final关键字修饰的方法,在子类中不能被重写或覆盖,其语法格式如下。访问修饰符final返回类型方法名(){}4.1.4final关键字2.使用final关键字修饰方法下面通过一个案例演示final修饰方法时的特点。Example07.java源代码4.1.4final关键字2.使用final关键字修饰方法案例的运行结果如下图所示。4.1.4final关键字3.使用final关键字修饰变量使用final关键字修饰的变量称为常量,一旦初始化后,其值就不能再改变。下面通过一个案例进行验证。Example08.java源代码4.1.4final关键字3.使用final关键字修饰变量案例的运行结果如下图所示。【案例4-1】交通工具运行模拟案例描述本案例要求设计一个交通工具运行的模拟程序,包括三种交通工具,分别为自行车、电动车和小汽车。交通工具的属性和行为如下表所示。交通工具共同特征共同行为特有方法Bicycle(自行车)1.交通工具的名称2.轮子数量3.工具颜色4.行驶速度1.行驶2.加速3.减速无ElectricBicycle(电动车)充电Car(小汽车)加油【案例4-1】交通工具运行模拟案例描述本案例要求在程序中模拟各个交通工具的行驶、充电或加油、加速、减速等行为。具体要求如下。要求各个交通工具行驶的方法中展示出交通工具的名称、轮子个数、颜色以及行驶速度。加速和减速时,可以传入参数,具象化速度的增加量和减少量。充电和加油的方法只输出提示即可。【案例4-1】交通工具运行模拟案例效果抽象类和接口4.24.2抽象类和接口

在Java编程中,经常需要描述一些抽象的概念,比如形状、车辆等,它们有共同的特征和行为,但又有不同的具体实现方式。为了更好地描述和拓展这些抽象概念,在Java中提供了两种机制:抽象类和接口。抽象类和接口都允许定义抽象方法,具体实现则由不同的子类或实现类来提供,使得程序可以定义通用的行为规范,实现代码的灵活性和重用性。4.2.1抽象类掌握抽象类的使用,能够定义和使用抽象类

先定一个小目标!4.2.1抽象类关键字abstract用于表示抽象,可以修饰方法和类,分别表示抽象方法和抽象类。抽象方法:只包含一个方法名,没有方法体的方法。使用关键字abstract定义抽象方法的语法格式。访问修饰符abstract返回值类型方法名(参数列表);4.2.1抽象类抽象类:包含了抽象方法的类就是抽象类。必须使用关键字abstract修饰。抽象类的语法格式如下。abstractclass抽象类名称{

属性;

访问修饰符返回值类型方法名称(参数){//普通方法return[返回值];}

访问修饰符abstract返回值类型抽象方法名称(参数);//抽象方法,无方法体}4.2.1抽象类与非抽象类相比,抽象类的特别之处。抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类。抽象类中可以包含零个至多个普通方法。抽象类不能直接创建对象,如果创建,则编译器会报错。继承抽象类的子类必须重写父类中所有的抽象方法,否则该子类也必须声明为抽象类。抽象类不能以final关键字和private关键字修饰,因为抽象类存在的意义就是为了被子类继承。抽象类中可以包含构造方法,但它不能被显示地手动调用。当抽象类的子类实例化时,会自动调用父类的构造方法。4.2.1抽象类下面通过一个案例演示抽象类的使用。案例演示Example09.java源代码4.2.1抽象类案例的运行结果如下图所示。案例演示4.2.2接口掌握接口的使用,能够定义和使用接口

先定一个小目标!4.2.2接口接口可以被看作一种特殊的抽象类。在JDK的发展过程中,接口的特性也不断更新和优化。下面对接口的更新情况和接口特性进行说明。4.2.2接口在接口中,不支持私有变量,变量会被隐式的指定为publicstaticfinal,也就是常量。4.2.2接口JDK8开始JDK8之前接口可以被看作一个彻底的抽象类,接口中的方法全部为抽象方法。接口中定义的方法可以有方法体,但是需要被关键字static或default修饰。JDK9之前接口中的方法默认为隐式抽象,即修饰符被隐式地指定为publicabstract,使用其他访问修饰符会报错。JDK9开始接口中引入了私有方法,允许使用private修饰符来声明,通常用于在接口的默认方法或静态方法中复用代码。4.2.2接口接口:使用关键字interface修饰。定义接口的语法格式。[public]interface接口名[extends接口1,接口2……]{ [public][static][final]数据类型常量名=常量; [public][abstract]返回值的数据类型方法名([参数列表]); [public|private]static返回值的数据类型方法名([参数列表]){方法体} [public]default返回值的数据类型方法名([参数列表]){方法体} private[static]返回值的数据类型方法名([参数列表]){方法体}}接口的存在是为了被实现,而不是被继承,因此接口与类的关系为实现关系。4.2.2接口修饰符

class类名implements接口1,接口2,...{

……}接口本身不能进行实例化,接口中的抽象方法、默认方法和私有方法只能通过其实现类的对象进行调用。Java提供了关键字implements用于实现接口。类实现接口的语法格式如下:一个类可以同时实现多个接口,使用英文逗号分隔。实现类必须实现接口所有的抽象方法。4.2.2接口下面通过一个描述月度工作流程的案例演示接口的使用。案例演示Example10.java源代码4.2.2接口案例的运行结果如下图所示。案例演示4.2.2接口前面已经提到,一个类可以实现多个接口。下面通过一个音乐播放器的案例演示这种情况。案例演示Example11.java源代码4.2.2接口案例的运行结果如下图所示。案例演示4.2.2接口当一个类既需要实现接口,又需要继承另一个类时,语法格式如下。class类名extends父类名implents接口{}4.2.2接口下面修改文件Example11.java,演示一个类既实现接口又继承父类的情况。案例演示Example12.java源代码4.2.2接口案例的运行结果如下图所示。案例演示4.2.2接口使用接口的注意事项。一个接口可以通过extends关键字继承另一个接口,这样的接口称为子接口,它会继承父接口的方法声明。当一个类实现两个接口,且两个接口中存在相同的抽象方法时,类中只需要重写一次这个方法即可,既表示重写接口1的,也表示重写接口2的。4.2.3抽象类和接口的比较掌握抽象类和接口的比较,能够简述抽象类和接口的相同点与不同点

先定一个小目标!4.2.3抽象类和接口的比较比较内容抽象类接口不同之处关键字abstractinterface属性无限制变量必须为publicstaticfinal抽象方法可以定义抽象方法,也可以定义普通方法可以定义抽象方法,也可以定义普通方法,但普通方法有限制,例如需要使用关键字static或default修饰构造方法可以有构造方法不能有构造方法类的关系类只能继承一个抽象类类可以实现多个接口继承/实现只能被类或抽象类继承既可以被接口继承,也能被类或抽象类实现多重继承不支持可以继承多个父接口相同之处(1)JDK9以后,都可以包含具体的方法实现(2)都不能实例化对象,需要子类或实现类实例化对象【案例4-2】打印不同图形本案例要求编写一个程序,根据用户的输入在控制台打印出不同的图形。要求用户输入要打印的图形,以及图形的尺寸,控制台使用“*”打印相应图案。要求提供三种图形,正方形、圆形和等边三角形。正方形需要提供边长、圆形需要提供半径、等边三角形需要提供高。案例描述【案例4-2】打印不同图形案例效果多态4.34.3多态多态是继封装、继承之后,面向对象的第三大特性。通过之前的学习,我们已经掌握了封装和继承的核心思想,本节将讲解面向对象中的多态。4.3.1多态概述熟悉多态概述,能够简述多态的概念和实现基础

先定一个小目标!4.3.1多态概述多态本来是生物学里的概念,表示地球上的生物在形态和状态方面的多样性。在Java的面向对象中,多态通常指的是运行时多态,当一个子类继承一个父类并重写父类中的方法时,或者一个子类实现一个接口并实现接口中的方法时,同一个行为可以有多个不同表现形式。4.3多态概述对象多态指同一个引用变量可以引用不同类型的对象,一般表现为一个父类的引用可以指向不同的子类对象。例如父类Animal有两个子类Cat和Dog,一个Animal对象可以指向一个Dog对象或者一个Cat对象。行为多态也称为方法多态,当用父类引用变量调用被子类重写的方法时,程序会根据对象的实际类型来确定调用哪个方法,实现不同对象调用相同方法时的不同响应。也就是说不同对象调用相同方法,可能会表现出不同的行为。4.3多态概述下面通过一个子类重写动物类的案例演示Java的运行时多态。案例演示Example13.java源代码4.3多态概述案例的运行结果如下图所示。案例演示4.3.2对象类型转换掌握对象类型转换,能够灵活对对象进行向上转型和向下转型

先定一个小目标!4.3.2对象类型转换多态形式下,使用父类应用变量引用不同子类对象可以提高代码灵活性。但是编译器只认识引用变量的类型,而不知道它所引用的具体对象的类型,因此无法直接调用子类特有的方法和属性。为了解决这个问题,可以进行类型转换。Java中的对象类型转换有向上转型和向下转型两种。4.3.2对象类型转换向下转型:指将父类的引用变量转换为子类的引用变量,从而获得对子类特有方法和属性的访问权限。向上转型:将子类对象赋值给父类引用变量。向上转型和向下转型的语法格式。父类类型变量名=new子类对象;

//向上转型子类类型变量名=(子类类型)父类变量名;

//向下转型向上转型的过程程序会自动完成,而向下转型需要显示地编写类型转换代码,并且需要指明转型后的子类类型。4.3.2对象类型转换下面修改文件Example13.java,演示对象类型的转换,在子类中添加特有方法,并在主方法中调用它。案例演示Example14.java源代码4.3.2对象类型转换案例的运行结果如下图所示。案例演示4.3.2对象类型转换需要注意的是,在向下转型之前,需要先进行一个对应的向上转型,这样可以确保引用变量所引用的对象属于子类,不能将父类实例强制转换为子类实例。例如,将文件Example14.java中第29行代码修改为下面所示代码。案例演示Dogdog=(Dog)newAnimal();再次运行文件Example14.java,结果如下图所示。4.3.3instanceof关键字熟悉instanceof关键字的应用,能够使用instanceof关键字判断一个对象是否为某个类或其子类的实例

先定一个小目标!4.3.3instanceof关键字instanceof关键字的作用:用于检查对象是否是特定类型的实例。使用格式如下:objectinstanceoftypeobject:要检查的对象type:要检查的类型返回值:boolean类型,如果object是type的实例或type子类的实例,则返回true;否则返回false。4.3.3instanceof关键字下面再次修改文件Example14.java,使用instanceof关键字判断变量的数据类型后再进行类型转换。案例演示Example15.java源代码4.3.3instanceof关键字修改后的案例运行结果如下图所示。案例演示【案例4-3】餐厅外卖配送随着科技的发展和人们生活节奏的加快,许多餐厅开始提供外卖服务。某餐厅在顾客在外卖软件上下单后,餐厅员工通过该软件管理用户的订单,如果发现存在待配送,则寻找外卖员对订单进行配送。为了节省资金,餐厅也会安排空闲的服务员对待配送的订单进行配送。现在需要给这个餐厅做一个外卖订单配送的管理系统。案例描述【案例4-3】餐厅外卖配送案例效果内部类4.44.4内部类在Java中有一种特殊的类,它被定义在其他类的内部,这样的类称为内部类,内部类所在的类称为外部类。根据定义位置、访问权限和定义方式的不同,Java中的内部类主要分为成员内部类、局部内部类、匿名内部类和静态内部类。4.4.1成员内部类

先定一个小目标!熟悉成员内部类,能够说出成员内部类的特点4.4.1成员内部类成员内部类概念:定义在一个类的成员位置的类。访问权限:成员内部类可以访问外部类的所有成员变量和方法,并可以有自己的成员变量和方法。创建内部类对象:先创建外部类的对象,然后再通过外部类的对象创建内部类对象。外部类名.成员内部类名变量名=外部类对象.new成员内部类名();4.4.1成员内部类下面通过一个控制设备开关机的案例演示成员内部类的定义和使用。案例演示Example16.java源代码4.4.1成员内部类案例的运行结果如下图所示。案例演示4.4.2局部内部类

先定一个小目标!熟悉局部内部类,能够说出局部内部类的特点4.4.2局部内部类局部内部类概念:是定义在方法中的类,它和局部变量一样,只在方法中有效。访问权限:局部内部类可以访问外部类的所有成员变量和方法,而局部内部类中变量和方法只能在局部内部类所在的方法中被访问。创建局部内部类对象:局部内部类只能在方法内部或作用域内部被实例化,创建局部内部类的语法格式与普通类相同。4.4.2局部内部类下面通过一个计算器案例演示局部内部类的使用。案例演示Example17.java源代码4.4.2局部内部类案例的运行结果如下图所示。案例演示4.4.3匿名内部类

先定一个小目标!熟悉匿名内部类,能够说出匿名内部类的特点4.4.3匿名内部类匿名内部类概念:没有名字的内部类,它通常用于一次性地定义一个类并创建其对象。匿名内部类不需要显式地定义一个类,而是在创建对象的同时定义这个类。匿名内部类通常作为方法的参数、返回值或变量的值使用。创建匿名内部类的语法格式:new继承的父类名或实现的接口名(){//匿名内部类的成员变量、方法等};上述语法格式创建了一个匿名内部类,并同时创建了该类的对象。这个匿名内部类继承了指定父类或实现了指定接口。4.4.3匿名内部类下面以匿名内部类的方式创建接口的实现类为例,演示匿名内部类的使用。案例演示Example18.java源代码4.4.3匿名内部类案例的运行结果如下图所示。案例演示4.4.3匿名内部类通常当方法的形参为接口或者抽象类时,也可以将匿名内部类作为参数传递。修改文件Example18.java来演示这种情况。案例演示Example19.java源代码4.4.4静态内部类

先定一个小目标!熟悉静态内部类,能够说出静态内部类的特点4.4.4静态内部类静态内部类概念:特殊的成员内部类,它使用static关键字修饰,与类的静态成员类似,都属于外部类本身,而不属于外部类的实例。访问权限:静态内部类只能访问外部类的静态成员,通过外部类访问静态内部类的成员时,可以跳过外部类直接访问。创建静态内部类对象的格式:外部类名.静态内部类名变量名=new外部类名.静态内部类名();4.4.4静态内部类下面通过一个输出系统日志的案例演示静态内部类的使用。案例演示Example20.java源代码4.4.4静态内部类案例的运行结果如下图所示。案例演示【案例4-4】多媒体播放器某款多媒体播放器提供音乐频道和评书频道供用户选择。用户可以选择想要进入的频道,并进行多媒体播放器支持的操作,支持的操作有添加播放内容、播放指定序号的内容,以及停止播放。本案例要求编写一个程序,模拟该多媒体播放器的操作流程,要求使用内部类实现。案例描述【案例4-4】多媒体播放器案例效果【案例4-4】多媒体播放器案例效果异常4.54.5.1什么是异常

先定一个小目标!熟悉什么是异常,能够说出Error类和Exception类区别4.5.1什么是异常生活中,难免会遇到意外情况和突发状况。例如,烧水时由于疏忽导致水烧开后溢出热水,可能会进一步导致短路,甚至引发触电等事故。这时应立即采取措施,处理突发情况。4.5.1什么是异常同样,在Java编程中也可能会遇到各种异常情况。例如,程序运行时磁盘空间不足、网络连接中断、访问的文件不存在等。这些情况会导致程序出现错误,并影响其他正常代码的执行。为此,Java提供了异常处理机制来帮助程序员检查和处理可能出现的错误,以保证程序的可读性和可维护性。4.5.1什么是异常下面通过一个案例来认识一下异常。案例演示Example21.java源代码4.5.1什么是异常案例的运行结果如下图所示。案例演示4.5.1什么是异常Java中的异常类都继承自java.lang.Throwable类。Throwable类的继承体系如下。4.5.1什么是异常Error错误类,表示Java运行时产生的系统内部错误或资源耗尽的错误,这类错误比较严重,仅靠修改程序代码本身无法恢复正常执行。Exception异常类,可以被程序处理和捕获的异常,通常情况下,在开发Java程序中进行的异常处理,都是针对Exception类及其子类。4.5.1什么是异常异常分为编译时异常和运行时异常。编译时异常是指在编译过程中检测到的异常,而运行时异常是指程序运行时发生的异常,编译时检测不到这种异常。Exception类中,所有的RunTimeException类及其子类的实例为运行时异常,其他类及其子类为编译时异常。编译时异常运行时异常4.5.1什么是异常Throwable类提供了一系列方法用于处理程序运行时的各种异常情况,Throwable类的子类可以通过重写这些方法,实现本类异常的处理。方法名称功能描述getMessage()返回异常的详细描述信息。通常用于获取异常产生的原因或错误的描述getStackTrace()以数组形式返回异常的跟踪栈信息printStackTrace()将异常的跟踪栈信息输出到控制台,并显示异常的类型、消息以及在代码中的位置4.5.2try...catch和finally语句

先定一个小目标!掌握try...catch语句和finally语句,能够使用try...catch语句和finally语句处理异常4.5.2try...catch和finally语句程序运行时,JVM会创建一个异常对象来表示异常,并将相应的异常信息封装在异常对象中。捕获到异常后,JVM会将异常对象传递给异常处理器,如果异常处理器没有进行处理,则会将该异常相关信息输出,并终止程序的运行。对此,可以对程序可能出现异常的代码进行监控,出现异常时,对其进行捕获并处理。4.5.2try...catch和finally语句Java提供了try…catch语句用于捕获并处理异常,try…catch语句捕获并处理异常的语法格式如下。try{//可能会出现异常的代码}catch(异常类型异常对象){//处理异常的代码}catch语句后的异常对象参数用于指明它能够处理的异常类型,其类型必须是Exception类或其子类。catch代码块可以有多个,用来匹配多个异常,但捕获父类异常的catch代码块必须放在捕获子类异常的catch代码块之后。4.5.2try...catch和finally语句try...catch语句的异常处理流程。4.5.2try...catch和finally语句下面修改文件Example21.java,使用try…catch语句对该程序中出现的异常进行捕获案例演示Example22.java源代码4.5.2try...catch和finally语句案例的运行结果如下图所示。案例演示4.5.2try...catch和finally语句try代码块中,发生异常的语句后面的代码是不会被执行的,然而在程序中有一些特定的语句无论异常是否发生都需要执行。为了解决这个问题,可以在try...catch语句后加一个finally代码块,finally代码块中存放的代码一定会被执行。4.5.2try...catch和finally语句try…catch…finally语句的异常处理流程。4.5.2try...catch和finally语句下面修改文件Example22.java,演示try…catch…finally语句的使用。案例演示Example23.java源代码4.5.2try...catch和finally语句案例的运行结果如下图所示。案例演示4.5.3异常的抛出和声明

先定一个小目标!掌握异常的抛出和声明,能够在程序中使用throw语句和throws语句分抛出异常和声明异常4.5.3异常的抛出和声明当程序中存在潜在的异常时,如果没有得到妥善的处理,可能导致程序崩溃。为此,Java提供了throw语句和throws语句分别用于抛出异常和声明异常,将方法可能出现的问题上报给方法的调用者,以便对异常进行相应处理,避免不必要的错误和异常情况。4.5.3异常的抛出和声明1.throw语句throw语句的作用:在方法或代码块中抛出该方法或代码块有可能发生的异常。使用thow关键字抛出异常的语法格式如下:throw异常对象;4.5.3异常的抛出和声明下面通过一个案例演示throw关键字的使用。案例演示Example24.java源代码4.5.3异常的抛出和声明案例的运行结果如下图所示。案例演示4.5.3异常的抛出和声明2.throws语句throws关键字的作用:用于在方法声明中指定方法可能抛出的

温馨提示

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

评论

0/150

提交评论