第8讲 抽象类、接口与异常处理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
父接口名列表{ 访问类型 interface 子接口名 extends 父接口名列表 }
一个类可以由某个类所派生并且还实现了多个接口 形式: 形式
访问类型 class 类名 extends 父类名 implements 接口名列表 { }
9
二.Interface
接口和抽象类的相同点: 接口和抽象类的相同点:
接口可以给出访问控制符, public或者缺省, public修饰的是 接口可以给出访问控制符,用public或者缺省, public修饰的是 或者缺省 公共接口,可以被别的包所访问,否则,只能在当前包中使用. 公共接口,可以被别的包所访问,否则,只能在当前包中使用. 一个接口可以继承多个父接口, 一个接口可以继承多个父接口,父接口间以逗号分隔 系统默认接口中的所有属性的修饰符为[public][static][final] 系统默认接口中的所有属性的修饰符为[public][static][final] 系统默认接口中的所有方法的修饰符都是[public][abstract] 系统默认接口中的所有方法的修饰符都是[public][abstract]
接口的作用
在程序设计中经常遇到这样一个问题:有些类互不相关,但却具 在程序设计中经常遇到这样一个问题:有些类互不相关, 有相似的方法。并且这些方法在各个类中的实现互不相同。我们不能 有相似的方法。并且这些方法在各个类中的实现互不相同。 为这些类定义一个共同的父类,但又希望在程序中体现出它们共同的 为这些类定义一个共同的父类, 接口,如飞机会飞,鸟会飞,他们都继承了同一个接口”飞“,但是 接口,如飞机会飞,鸟会飞,他们都继承了同一个接口” F22属于飞机抽象类,鸽子属于鸟抽象类。 F22属于飞机抽象类,鸽子属于鸟抽象类。 属于飞机抽象类
11
三.Exception
ng.Throwable是所有异常类的父类。 ng.Throwable是所有异常类的父类。 是所有异常类的父类 Error类对象由Java虚拟机生成并抛出 类对象由Java虚拟机生成并抛出, Error类对象由Java虚拟机生成并抛出,代表系统严重错 误,一般程序不处理这类错误 Exception类对象由应用程序处理或抛出 类对象由应用程序处理或抛出。 Exception类对象由应用程序处理或抛出。用于用户程序 可能捕获的异常,也是用来创建用户异常类型子类的类。 可能捕获的异常,也是用来创建用户异常类型子类的类。 RuntimeException:运行时程序故障,例如被零除、 RuntimeException:运行时程序故障,例如被零除、数 组下标越界等。这些错误可能在任何方法中产生, 组下标越界等。这些错误可能在任何方法中产生,并且 良好的程序应该可以避免这些错误。 良好的程序应该可以避免这些错误。 IOException类异常,java要求程序中必须有相应的异常 IOException类异常,java要求程序中必须有相应的异常 类异常 处理代码
异常的产生 异常的处理 常见的异常
2
一.抽象类
抽象方法
定义: 定义: 方法名([参数表]); ([参数表 abstract void 方法名([参数表]); 没有方法体的方法 就是抽象方法。 没有方法体的方法,就是抽象方法。 方法体的方法, 构造方法、静态方法、私有方法、final方法不能 构造方法、静态方法、私有方法、final方法不能 被声明为抽象的方法。 被声明为抽象的方法。
13
三.Exception
try{
异常的处理
当前方法自己捕捉处理异常: try-catch当前方法自己捕捉处理异常: try-catch-finally
可能出现异常的代码; 可能出现异常的代码; } catch(异常类名 catch(异常类名 e){ 处理不同类型异常; 处理不同类型异常; } catch(异常类名 e){ 异常类名 处理不同类型异常; 处理不同类型异常; } finally{ 总是执行; 总是类
定义: 定义: abstract class 类名 … { 方法名(); abstract void 方法名(); … }
含有抽象方法的类,即为抽象类。 含有抽象方法的类,即为抽象类。 如果一个子类没有实现抽象基类中所有的抽象方法, 如果一个子类没有实现抽象基类中所有的抽象方法,则子 类也成为一个抽象类。 类也成为一个抽象类。 我们可以将一个没有任何抽象方法的类声明为abstract abstract, 我们可以将一个没有任何抽象方法的类声明为abstract, 避免由这个类产生任何的对象。 避免由这个类产生任何的对象。
10
三.Exception
异常的产生
异常(Exception)是程序执行过程中出现的非正常事件 异常(Exception)是程序执行过程中出现的非正常事件, (Exception)是程序执行过程中出现的非正常事件, 即各种意外情况。比如说: 即各种意外情况。比如说:
所需文件找不到③ 运行时磁盘空间不够④ ① 用户输入出错 ② 所需文件找不到③ 运行时磁盘空间不够④ 内 数的溢出,被零除…) 数组下标越界…… 存不够 ⑤ 算术运算错 (数的溢出,被零除 )⑥ 数组下标越界
7
二.Interface
接口的特点1 接口的特点1
接口抽象方法的默认修饰符为public, 接口抽象方法的默认修饰符为public,在实现接口时必须 public public关键字在方法头上说明 关键字在方法头上说明。 用public关键字在方法头上说明。 一个类在实现某接口的抽象方法时, 一个类在实现某接口的抽象方法时,必须使用完全相同的 方法头。 方法头。 如果一个类实现多接口, 如果一个类实现多接口,用逗号隔开 如果一个类实现了声明相同方法的两个接口, 如果一个类实现了声明相同方法的两个接口,则被多个接 口共用。 口共用。 类在实现接口时可以定义它自己的附加成员, 类在实现接口时可以定义它自己的附加成员,这也是最常 见的形式。 见的形式。 当一个类实现了一个子接口, 当一个类实现了一个子接口,它必须实现这个子接口及其 父接口,父接口的父接口等所有方法。 父接口,父接口的父接口等所有方法。 如果一个类不完全实现接口的所有方法, 如果一个类不完全实现接口的所有方法,必须把类定义成 abstract类型的类 类型的类. abstract类型的类.
14
三.Exception
异常的处理
当前方法自己捕捉处理异常: try-catch当前方法自己捕捉处理异常: try-catch-finally
catch的执行条件是 的执行条件是: 某catch的执行条件是: 首先在try try中发生了异常 首先在try中发生了异常 异常的类型与catch catch要捕捉的一致 异常的类型与catch要捕捉的一致 多个catch共存注意顺序,子类在前, catch共存注意顺序 多个catch共存注意顺序,子类在前,父类在后 try{ } catch(Exception e){ } catch(ArrayIndexOutOfBoundsException e){ } ArrayIndexOutOfBoundsException类为 类的子类, ArrayIndexOutOfBoundsException类为 Exception 类的子类,父 类可以指向子类对象,若发生越界异常,前一个catch已经捕捉, catch已经捕捉 类可以指向子类对象,若发生越界异常,前一个catch已经捕捉, 后一个catch catch无意义 后一个catch无意义
8
二.Interface
接口的特点2 接口的特点2
可以为多个接口的实现类共享常量,只需在接口中定义, 可以为多个接口的实现类共享常量,只需在接口中定义, 并赋值, 并赋值,此后不能再修改 在类中说明是接口的实现类,就可以使用该接口的常量了。 在类中说明是接口的实现类,就可以使用该接口的常量了。 接口可以像类一样的继承,并且允许多继承。 接口可以像类一样的继承,并且允许多继承。
12
三.Exception
异常的处理
系统发生异常时,我们必须捕捉异常进行处理, 系统发生异常时,我们必须捕捉异常进行处理,否则系 统会中断我们程序的运行, 统会中断我们程序的运行,并且还不能正常释放系统资 源。 对异常的处理一般有两种方式: 对异常的处理一般有两种方式:
当前方法自己捕捉处理异常: 当前方法自己捕捉处理异常: try-catchtry-catch-finally 语句 将异常抛出, 将异常抛出,让方法的调用者处理 throw 语句
15
三.Exception
异常的处理
当前方法自己捕捉处理异常: try-catch当前方法自己捕捉处理异常: try-catch-finally
6
二.Interface
接口的定义
接口的定义
接口名[extends 父接口名列表] [public] interface 接口名[extends 父接口名列表] { //常量声明 //常量声明 常量值; [public][static][final] 域类型 域名 = 常量值; //抽象方法声明 //抽象方法声明 方法名(参数列表) [public][abstract] 返回值类型 方法名(参数列表) }
子类在覆盖父类带throws子句的方法时子类方法声明中的throws子句不能出现父类对应方法中没有的异常类型即子类方法抛出的异常不会超过父类定义的范围19常见的异常异常说明runtimeexceptionjavalang包中多数异常的基类arithmeticexception算术错误如除以illegalargumentexception方法收到非法参数arrayindexoutofboundsexception数组下标出界nullpointerexception试图访问null对象引用securityexception试图违反安全性classnotfoundexception不能加载请求的类20常见的异常异常说明awtexceptionawt中的异常ioexception异常的根类filenotfoundexception不能找到文件eofexception文件结束illegalaccessexception对类的访问被拒绝nosuchmethodexception请求的方法不存在interruptedexception线程中断21实验名称
4
抽象类练习
在一个图书馆管理系统中有 一个抽象类图 书类,具有图书的增加、删除、查询、修 改的抽象行为,图书类有一个子类报刊杂 志类,它具体实现了其四个抽象行为.最后 测试一下报刊杂志类的四个行为。
5
二.Interface
抽象类的作用
接口的作用
java编程思想中说“万物皆对象” java编程思想中说“万物皆对象”,我们知道所有的对象都是通 编程思想中说 过类来描绘的,但是反过来却不是这样。 过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描 绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类就是抽象类。类是对对象的抽象, 这样的类就是抽象类。类是对对象的抽象,可以把抽象类理解为把类 当作对象,抽象成的类叫做抽象类。 当作对象,抽象成的类叫做抽象类。
面向对象程序设计
电子信息工程学院
浙江万里学院
2011-11-25
李国胜 Richard@ 4#401 88222096
1
抽象类、 第8讲 抽象类、接口与异常处理
一.抽象类
抽象方法以及定义 抽象类以及定义
二.Interface
接口的作用 接口的定义与特点 接口与抽象类的比较
三.Exception
一旦引发异常, 程序将突然中止, 一旦引发异常 , 程序将突然中止 , 且控制将返回操作系 统 , 发生异常后此前分配的所有资源都将保留在相同的 状态,这将导致资源漏洞。 状态,这将导致资源漏洞。 Java编程语言中 编程语言中, 在 Java 编程语言中 , 异常类定义程序中可能遇到的轻微 的错误条件。 的错误条件。 可以编写代码来处理异常并继续程序的执行, 可以编写代码来处理异常并继续程序的执行 , 而不让程 序中断。 序中断。
接口和抽象类的不同点: 接口和抽象类的不同点:
空方法前必须加abstract,而在接口中不需要。 abstract,而在接口中不需要 (1)抽象类中的空方法前必须加abstract,而在接口中不需要。 (2)在抽象类中可以定义实例变量、空和非空的方法,在接口 在抽象类中可以定义实例变量、空和非空的方法, 只能定义常量和空的方法。 中,只能定义常量和空的方法。 (3)接口允许多继承,类仅支持单继承。 接口允许多继承,类仅支持单继承。
接口与抽象类的比较
(1)都有空的方法,都必须在子类中实现这些方法。 都有空的方法,都必须在子类中实现这些方法。 (2)都不能用new关键字来创建这两种类型的对象。 都不能用new关键字来创建这两种类型的对象。 new关键字来创建这两种类型的对象 (3)都可以具有继承关系。 都可以具有继承关系。 (4)接口和类一样可以具有public属性。 接口和类一样可以具有public属性。 public属性
一个类可以由某个类所派生并且还实现了多个接口 形式: 形式
访问类型 class 类名 extends 父类名 implements 接口名列表 { }
9
二.Interface
接口和抽象类的相同点: 接口和抽象类的相同点:
接口可以给出访问控制符, public或者缺省, public修饰的是 接口可以给出访问控制符,用public或者缺省, public修饰的是 或者缺省 公共接口,可以被别的包所访问,否则,只能在当前包中使用. 公共接口,可以被别的包所访问,否则,只能在当前包中使用. 一个接口可以继承多个父接口, 一个接口可以继承多个父接口,父接口间以逗号分隔 系统默认接口中的所有属性的修饰符为[public][static][final] 系统默认接口中的所有属性的修饰符为[public][static][final] 系统默认接口中的所有方法的修饰符都是[public][abstract] 系统默认接口中的所有方法的修饰符都是[public][abstract]
接口的作用
在程序设计中经常遇到这样一个问题:有些类互不相关,但却具 在程序设计中经常遇到这样一个问题:有些类互不相关, 有相似的方法。并且这些方法在各个类中的实现互不相同。我们不能 有相似的方法。并且这些方法在各个类中的实现互不相同。 为这些类定义一个共同的父类,但又希望在程序中体现出它们共同的 为这些类定义一个共同的父类, 接口,如飞机会飞,鸟会飞,他们都继承了同一个接口”飞“,但是 接口,如飞机会飞,鸟会飞,他们都继承了同一个接口” F22属于飞机抽象类,鸽子属于鸟抽象类。 F22属于飞机抽象类,鸽子属于鸟抽象类。 属于飞机抽象类
11
三.Exception
ng.Throwable是所有异常类的父类。 ng.Throwable是所有异常类的父类。 是所有异常类的父类 Error类对象由Java虚拟机生成并抛出 类对象由Java虚拟机生成并抛出, Error类对象由Java虚拟机生成并抛出,代表系统严重错 误,一般程序不处理这类错误 Exception类对象由应用程序处理或抛出 类对象由应用程序处理或抛出。 Exception类对象由应用程序处理或抛出。用于用户程序 可能捕获的异常,也是用来创建用户异常类型子类的类。 可能捕获的异常,也是用来创建用户异常类型子类的类。 RuntimeException:运行时程序故障,例如被零除、 RuntimeException:运行时程序故障,例如被零除、数 组下标越界等。这些错误可能在任何方法中产生, 组下标越界等。这些错误可能在任何方法中产生,并且 良好的程序应该可以避免这些错误。 良好的程序应该可以避免这些错误。 IOException类异常,java要求程序中必须有相应的异常 IOException类异常,java要求程序中必须有相应的异常 类异常 处理代码
异常的产生 异常的处理 常见的异常
2
一.抽象类
抽象方法
定义: 定义: 方法名([参数表]); ([参数表 abstract void 方法名([参数表]); 没有方法体的方法 就是抽象方法。 没有方法体的方法,就是抽象方法。 方法体的方法, 构造方法、静态方法、私有方法、final方法不能 构造方法、静态方法、私有方法、final方法不能 被声明为抽象的方法。 被声明为抽象的方法。
13
三.Exception
try{
异常的处理
当前方法自己捕捉处理异常: try-catch当前方法自己捕捉处理异常: try-catch-finally
可能出现异常的代码; 可能出现异常的代码; } catch(异常类名 catch(异常类名 e){ 处理不同类型异常; 处理不同类型异常; } catch(异常类名 e){ 异常类名 处理不同类型异常; 处理不同类型异常; } finally{ 总是执行; 总是类
定义: 定义: abstract class 类名 … { 方法名(); abstract void 方法名(); … }
含有抽象方法的类,即为抽象类。 含有抽象方法的类,即为抽象类。 如果一个子类没有实现抽象基类中所有的抽象方法, 如果一个子类没有实现抽象基类中所有的抽象方法,则子 类也成为一个抽象类。 类也成为一个抽象类。 我们可以将一个没有任何抽象方法的类声明为abstract abstract, 我们可以将一个没有任何抽象方法的类声明为abstract, 避免由这个类产生任何的对象。 避免由这个类产生任何的对象。
10
三.Exception
异常的产生
异常(Exception)是程序执行过程中出现的非正常事件 异常(Exception)是程序执行过程中出现的非正常事件, (Exception)是程序执行过程中出现的非正常事件, 即各种意外情况。比如说: 即各种意外情况。比如说:
所需文件找不到③ 运行时磁盘空间不够④ ① 用户输入出错 ② 所需文件找不到③ 运行时磁盘空间不够④ 内 数的溢出,被零除…) 数组下标越界…… 存不够 ⑤ 算术运算错 (数的溢出,被零除 )⑥ 数组下标越界
7
二.Interface
接口的特点1 接口的特点1
接口抽象方法的默认修饰符为public, 接口抽象方法的默认修饰符为public,在实现接口时必须 public public关键字在方法头上说明 关键字在方法头上说明。 用public关键字在方法头上说明。 一个类在实现某接口的抽象方法时, 一个类在实现某接口的抽象方法时,必须使用完全相同的 方法头。 方法头。 如果一个类实现多接口, 如果一个类实现多接口,用逗号隔开 如果一个类实现了声明相同方法的两个接口, 如果一个类实现了声明相同方法的两个接口,则被多个接 口共用。 口共用。 类在实现接口时可以定义它自己的附加成员, 类在实现接口时可以定义它自己的附加成员,这也是最常 见的形式。 见的形式。 当一个类实现了一个子接口, 当一个类实现了一个子接口,它必须实现这个子接口及其 父接口,父接口的父接口等所有方法。 父接口,父接口的父接口等所有方法。 如果一个类不完全实现接口的所有方法, 如果一个类不完全实现接口的所有方法,必须把类定义成 abstract类型的类 类型的类. abstract类型的类.
14
三.Exception
异常的处理
当前方法自己捕捉处理异常: try-catch当前方法自己捕捉处理异常: try-catch-finally
catch的执行条件是 的执行条件是: 某catch的执行条件是: 首先在try try中发生了异常 首先在try中发生了异常 异常的类型与catch catch要捕捉的一致 异常的类型与catch要捕捉的一致 多个catch共存注意顺序,子类在前, catch共存注意顺序 多个catch共存注意顺序,子类在前,父类在后 try{ } catch(Exception e){ } catch(ArrayIndexOutOfBoundsException e){ } ArrayIndexOutOfBoundsException类为 类的子类, ArrayIndexOutOfBoundsException类为 Exception 类的子类,父 类可以指向子类对象,若发生越界异常,前一个catch已经捕捉, catch已经捕捉 类可以指向子类对象,若发生越界异常,前一个catch已经捕捉, 后一个catch catch无意义 后一个catch无意义
8
二.Interface
接口的特点2 接口的特点2
可以为多个接口的实现类共享常量,只需在接口中定义, 可以为多个接口的实现类共享常量,只需在接口中定义, 并赋值, 并赋值,此后不能再修改 在类中说明是接口的实现类,就可以使用该接口的常量了。 在类中说明是接口的实现类,就可以使用该接口的常量了。 接口可以像类一样的继承,并且允许多继承。 接口可以像类一样的继承,并且允许多继承。
12
三.Exception
异常的处理
系统发生异常时,我们必须捕捉异常进行处理, 系统发生异常时,我们必须捕捉异常进行处理,否则系 统会中断我们程序的运行, 统会中断我们程序的运行,并且还不能正常释放系统资 源。 对异常的处理一般有两种方式: 对异常的处理一般有两种方式:
当前方法自己捕捉处理异常: 当前方法自己捕捉处理异常: try-catchtry-catch-finally 语句 将异常抛出, 将异常抛出,让方法的调用者处理 throw 语句
15
三.Exception
异常的处理
当前方法自己捕捉处理异常: try-catch当前方法自己捕捉处理异常: try-catch-finally
6
二.Interface
接口的定义
接口的定义
接口名[extends 父接口名列表] [public] interface 接口名[extends 父接口名列表] { //常量声明 //常量声明 常量值; [public][static][final] 域类型 域名 = 常量值; //抽象方法声明 //抽象方法声明 方法名(参数列表) [public][abstract] 返回值类型 方法名(参数列表) }
子类在覆盖父类带throws子句的方法时子类方法声明中的throws子句不能出现父类对应方法中没有的异常类型即子类方法抛出的异常不会超过父类定义的范围19常见的异常异常说明runtimeexceptionjavalang包中多数异常的基类arithmeticexception算术错误如除以illegalargumentexception方法收到非法参数arrayindexoutofboundsexception数组下标出界nullpointerexception试图访问null对象引用securityexception试图违反安全性classnotfoundexception不能加载请求的类20常见的异常异常说明awtexceptionawt中的异常ioexception异常的根类filenotfoundexception不能找到文件eofexception文件结束illegalaccessexception对类的访问被拒绝nosuchmethodexception请求的方法不存在interruptedexception线程中断21实验名称
4
抽象类练习
在一个图书馆管理系统中有 一个抽象类图 书类,具有图书的增加、删除、查询、修 改的抽象行为,图书类有一个子类报刊杂 志类,它具体实现了其四个抽象行为.最后 测试一下报刊杂志类的四个行为。
5
二.Interface
抽象类的作用
接口的作用
java编程思想中说“万物皆对象” java编程思想中说“万物皆对象”,我们知道所有的对象都是通 编程思想中说 过类来描绘的,但是反过来却不是这样。 过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描 绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类就是抽象类。类是对对象的抽象, 这样的类就是抽象类。类是对对象的抽象,可以把抽象类理解为把类 当作对象,抽象成的类叫做抽象类。 当作对象,抽象成的类叫做抽象类。
面向对象程序设计
电子信息工程学院
浙江万里学院
2011-11-25
李国胜 Richard@ 4#401 88222096
1
抽象类、 第8讲 抽象类、接口与异常处理
一.抽象类
抽象方法以及定义 抽象类以及定义
二.Interface
接口的作用 接口的定义与特点 接口与抽象类的比较
三.Exception
一旦引发异常, 程序将突然中止, 一旦引发异常 , 程序将突然中止 , 且控制将返回操作系 统 , 发生异常后此前分配的所有资源都将保留在相同的 状态,这将导致资源漏洞。 状态,这将导致资源漏洞。 Java编程语言中 编程语言中, 在 Java 编程语言中 , 异常类定义程序中可能遇到的轻微 的错误条件。 的错误条件。 可以编写代码来处理异常并继续程序的执行, 可以编写代码来处理异常并继续程序的执行 , 而不让程 序中断。 序中断。
接口和抽象类的不同点: 接口和抽象类的不同点:
空方法前必须加abstract,而在接口中不需要。 abstract,而在接口中不需要 (1)抽象类中的空方法前必须加abstract,而在接口中不需要。 (2)在抽象类中可以定义实例变量、空和非空的方法,在接口 在抽象类中可以定义实例变量、空和非空的方法, 只能定义常量和空的方法。 中,只能定义常量和空的方法。 (3)接口允许多继承,类仅支持单继承。 接口允许多继承,类仅支持单继承。
接口与抽象类的比较
(1)都有空的方法,都必须在子类中实现这些方法。 都有空的方法,都必须在子类中实现这些方法。 (2)都不能用new关键字来创建这两种类型的对象。 都不能用new关键字来创建这两种类型的对象。 new关键字来创建这两种类型的对象 (3)都可以具有继承关系。 都可以具有继承关系。 (4)接口和类一样可以具有public属性。 接口和类一样可以具有public属性。 public属性