第6讲面向对象特征解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2异常产生与声明
从键盘读入汉字,打印出其机内码。注意不是UNICODE码。若按了 a键,则立即抛出异常。
import java.io.*; public class Ex_Exception3 { public static void main(String[] args) { int c; try { while ( ( c = System.in.read())!=-1 ) { if( c=='a' ) throw new Exception("键a坏了!"); System.out.println(c); } } catch(IOException e) { System.out.println(e); } catch(Exception e) { System.out.println(e); } } }
//抽象方法声明 [public] 异常列表];} [abstract] [native]返回值 方法名(参数列表) [throw
从上面的语法规定可以看出,定义接口与定义类非常相似,实际上完全可以把接口理 解成为一种特殊的类,接口是由常量和抽象方法组成的特殊类。
1.2接口声明
(1)接口中的属性都是用 final修饰的常量,在 这个类中,所有的成员函数都是抽象的,也就 是说它们都只有说明没有定义; ( 2 )接口中的方法都是用 abBiblioteka Baidutract 修饰的抽象方 法,在接口中只能给出这些抽象方法的方法名、 返回值和参数列表,而不能定义方法体,即仅 仅规定了一组信息交换、传输和处理的“接 口”。
2.3异常捕获与处理
Java 中 使 用 try-catch-finally 语 句 来 捕 获 并 处 理 异 常 , trycatch-finally语句的语法格式如下: try { } catch(Exception_1 e1) { //处理异常Exception_1的代码 } catch(Exception_2 e2) { //处理异常Exception_2的代码 } ... catch(Exception_n en) { //处理异常Exception_n的代码 } [ finally{//通常是释放资源的程序代码 } ] 整个语句由try块、catch块和可以缺省finally块三部分组成。
第6讲:面向对象特征 总结与实例
1
接口与抽象类 2 异常类 3 类与类型 4 基础数据结构
1接口与抽象类 1.1接口语法
[public] {//接口体; //常量域声明 interface 接口名 [extends 父接口名列表]
[public]
[static]
[final]
域类型
域名=常量值;
2 异常类
异常:正常程序所不能处理或者无法
处理的情况。 原因:1、避免程序繁琐与复杂 2、当前层次处理不恰当 引入异常机制的目的: 1、使异常处理简化、统一 2、保留异常处理的灵活性
2.1异常类
通常用类Exception及其子类来描述异常的
特征。 按照编译时是否能够监测,分为: Checked Exception Unchecked Exception两种,其中非监测异 常又分为RuntimeException、Error。通常 Error是致命性的,无法由程序来处理,例如 VirtualMachineError.
自定义异常类
本例中,当a的值小于10或大于100时,将产生异常。
class MyException1 extends Exception { int num; MyException1(int a) { num=a;} public String toString() { return num+"<10!\r\n值必须大于10";} }
//可能会产生异常的程序代码
2.3异常捕获与处理
当产生异常时,程序从上往下依次判该异常是不是 catch(Exception_x e)块中Exception_x类或其子类的对象。 try-catch-finally语句的嵌套。 try-catch-finally语句的 try 块、catch块、 finally块中的程 序代码都可以嵌套另外的 try-catch-finally语句,且嵌套层次数 任意。
1.3接口实现
• 在类的声明部分,用implements关键字声明该类将要实现哪些接口 • 如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实 现指定接口的所有抽象方法,即为所有抽象方法定义方法体,而且方 法头部分应该与接口中的定义完全一致,即有完全相同的返回值和参 数列表 • 如果实现某接口的类是abstract的抽象类,则它可以不实现该接口所有 的方法 • 一个类在实现某接口的抽象方法时,必须使用完全相同的方法头 • 接口的抽象方法,其访问限制符都已指定是public,所以类在实现方法 时,必须显式地使用public修饰符
class MyException2 extends Exception { int num; MyException2(int a) { num=a;} public String toString() { return num+">100!\r\n值必须小于100";}
2.2异常产生与声明
声明抛出异常是一个子句,只能加在方法头部的后边。 语法格式如下: throws <用逗号分隔的异常列表> 如:public int read() throws IOException { ... 真正抛出异常的动作是由抛出异常语句来完成的。 格式如下: throw <异常对象>; 其中:<异常对象>必须是Throwable类或其子类的对象。 如:throw new Exception("这是一个异常"); 下面的语句在编译时将会产生语法错误: throw new String("能抛出吗?"); 这是因为String类不是Throwable类的子类。
2.4 异常处理总结
对Error类或其子类的对象,程序中不必进行处理 对RuntimeException类或其子类,程序中可以不必进行处 理 除此之外的异常,程序员都应该在程序中进行处理。要 么用try-catch-finally进行捕获处理,要么明确表示不处理 从而声明抛出异常,要么先捕获处理然后再次抛出。 Java的异常处理机制(try-catch-finally语句、throws 子句、 throw 语句)带来Java程序代码结构上的改变 不能滥用异常机制。简单的出错判断建议用if语句 不要过分细分异常