1、教案Java语言程序设计教案56学时第7章授 课 内 容学时分配教学方法与手段进度计划(周次)课堂讲授(学时)上机实践(学时)Java 语言入门标识符、关键字和数据类型运算符、表达式和语句64212类与对象1410425子类与继承6425-7接口与实现4227-8内部类与异常类2208常用实用类6429-10组件及事件处理64210-11输入、输出流22012JDBC与MySQL数据库42212-13Java多线程机制22013Java网络的基本知识22014总结22014总学时各 章 教 学 实 施 计 划章节题目 第7章 内部类与异常类7.1节7.6节学 时2教学目的、要求(分了解、理解、
2、掌握 三个层次):1、掌握内部类、匿名类。2、了解异常类、断言。教学内容(包括基本内容、重点、难点):基本内容:内部类匿名类 异常类 断言教学重点 :重点是理解和子类有关的匿名类、和接口有关的匿名类。教学难点: 难点是匿名类对象作参数。讨论、思考题、作业:习题7 调试例子7预习第8章 8.18.3节参考书目(含参考书、文献等)具体内容:参考书对应章节课 堂 教 学 实 施 计 划第 12课教学过程设计: 复习 分钟;授新课 95 分钟讨论 5 分钟;其它 分钟授课类型(请打):理论课 讨论课 实验课 习题课 其它教学方式(请打):讲 授 讨 论 示 教 指 导 其它教学手段(请打):多媒体 模
3、 型 实 物 挂 图 音像 其它主要内容基本内容:v内部类v匿名类v 异常类v 断言教学重点 :重点是理解和子类有关的匿名类、和接口有关的匿名类。教学难点: 难点是匿名类对象作参数。第7章 内部类与异常类 7.1 内部类Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。例如:某种类型的农场饲养了一种特殊种类的牛,但不希望其他农场饲养这种特殊种类的牛,那么这种类型的农场就可以将创建这种特殊种牛的类作为自己的内部类。下面的例子1(Example7_1.java)中有一个RedCowForm(红牛农场)类,该类中有一个名字为RedCow(红牛)的内部类。程序
4、运行效果如图7.1。例子1RedCowForm.javapublic class RedCowForm static String formName; RedCow cow; /内部类声明对象 RedCowForm() RedCowForm(String s) cow = new RedCow(150,112,5000); formName = s; public void showCowMess() cow.speak(); class RedCow /内部类的声明 String cowName = 红牛; int height,weight,price; RedCow(int h,int
5、w,int p) height = h; weight = w; price = p; void speak() System.out.println(偶是+cowName+,身高:+height+cm 体重:+ weight+kg,生活在+formName); /内部类结束 /外嵌类结束Example7_1.javapublic class Example7_1 public static void main(String args) RedCowForm form = new RedCowForm(红牛农场); form.showCowMess(); form.cow.speak(); 7
6、.2 匿名类Java允许我们直接使用一个类的子类的类体创建一个子类对象。7.2.1和子类有关的匿名类创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。 假设Bank是类,那么下列代码就是用Bank的一个子类(匿名类)创建对象:new Bank () 匿名类的类体;例子2OutputAlphabet.javaabstract class OutputAlphabet public abstract void output();OutputEnglish.javapublic class OutputEnglish extends Output
7、Alphabet /输出英文字母的子类 public void output() for(char c=a;c=z;c+) System.out.printf(%3c,c); ShowBoard.javapublic class ShowBoard void showMess(OutputAlphabet show) /参数show是OutputAlphabet类型的对象 show.output(); Example7_2.javapublic class Example7_2 public static void main(String args) ShowBoard board = new
8、 ShowBoard(); board.showMess(new OutputEnglish();/向参数传递OutputAlphabet的子类 /OutputEnglish的对象 board.showMess(new OutputAlphabet()/向参数传递OutputAlphabet的匿名子 /类的对象 public void output() for(char c=;c=;c+) /输出希腊字母 System.out.printf(%3c,c); ); /请注意分号在这里 7.2.2 和接口有关的匿名类假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一
9、个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。下列代码就是用实现了Computable接口的类(匿名类)创建对象:new Computable() 实现接口的匿名类的类体 ;例子3Example7_3.javainterface SpeakHello void speak();class HelloMachine public void turnOn(SpeakHello hello) hello.speak(); public class Example7_3 public static void main(String args) HelloM
10、achine machine = new HelloMachine(); machine.turnOn( new SpeakHello() /和接口SpeakHello有关的匿名类 public void speak() System.out.println(hello,you are welcome!); ); machine.turnOn( new SpeakHello() /和接口SpeakHello有关的匿名类 public void speak() System.out.println(你好,欢迎光临!); ); 7.3 异常类所谓异常就是程序运行时可能出现一些错误,比如试图打开一个
11、根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理。程序运行出现异常时,Java运行环境就用异常类Exception的相应子类创建一个异常对象,并等待处理。异常对象可以调用如下方法得到或输出有关异常的信息: public String getMessage(); public void printStackTrace(); public String toString();7.3.1 trycatch语句Java使用trycatch语句来处理异常,将可能出现的异常操作放在trycatch语句的try部分,将发生异常后的处理放在catch部分。 trycatch语句的
12、格式如下:try 包含可能发生异常的语句catch(ExceptionSubClass1 e) catch(ExceptionSubClass2 e) 带finally子语句的trycatch语句,语法格式如下:trycatch(ExceptionSubClass e) finally其执行机制是在执行trycatch语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。例子4Example7_4.javapublic class Example7_4 public static void main(String args ) int n
13、= 0,m = 0,t = 1000; try m = Integer.parseInt(8888); n = Integer.parseInt(ab89); /发生异常,转向catch t = 7777; /t没有机会被赋值 catch(NumberFormatException e) System.out.println(发生异常:+e.getMessage(); System.out.println(n=+n+,m=+m+,t=+t); try System.out.println(故意抛出I/O异常!); throw new java.io.IOException(我是故意的); /故
14、意抛出异常 /System.out.println(这个输出语句肯定没有机会执行,必须注释,否则编译 出错); catch(java.io.IOException e) System.out.println(发生异常:+e.getMessage(); 7.3.2 异常的声明一个方法不处理它产生的异常,而是沿着调用层次向上传递,由调用它的方法来处理这些异常,叫声明异常.声明异常的方法:在产生异常的方法名后面加上要抛出(throws)的异常的列表:如:void compute(int x) throws ArithmeticException /这里有异常发生,但是并没有处理例子5BankExce
15、ption.javapublic class BankException extends Exception String message; public BankException(int m,int n) message = 入账资金+m+是负数或支出+n+是正数,不符合系统要求.; public String warnMess() return message; Bank.javapublic class Bank private int money; public void income(int in,int out) throws BankException if(in=0|in+o
16、ut=0:负数不能是成绩; sum = sum+number; System.out.println(总成绩:+sum); 7.5 应 用 举 例分析例题7,然后让学生自己调试,提出自己的理解。总结Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。和某类有关的匿名类就是该类的一个子类,该子类没有明显的用类声明来定义,所以称做匿名类。和某接口有关的匿名类就是实现该接口的一个类,该子类没有明显的用类声明来定义,所以称做匿名类。Java使用trycatch语句来处理异常,将可能出现的异常操作放在trycatch语句的try部分,当try部分中的某个方法调用发生异常后,try部分将立刻结束执行,而转向执行相应的catch部分。作业习题7 ,调试例子7预习第8章 8.18.3节本章结束
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1