教案Java语言程序设计教案56学时第7章.docx
- 文档编号:27367474
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:15
- 大小:23.44KB
教案Java语言程序设计教案56学时第7章.docx
《教案Java语言程序设计教案56学时第7章.docx》由会员分享,可在线阅读,更多相关《教案Java语言程序设计教案56学时第7章.docx(15页珍藏版)》请在冰豆网上搜索。
教案Java语言程序设计教案56学时第7章
授课内容
学时分配
教学方法与手段
进度计划
(周次)
课堂讲授(学时)
上机实践(学时)
Java语言入门
标识符、关键字和数据类型
运算符、表达式和语句
6
4
2
1~2
类与对象
14
10
4
2~5
子类与继承
6
4
2
5-7
接口与实现
4
2
2
7-8
内部类与异常类
2
2
0
8
常用实用类
6
4
2
9-10
组件及事件处理
6
4
2
10-11
输入、输出流
2
2
0
12
JDBC与MySQL数据库
4
2
2
12-13
Java多线程机制
2
2
0
13
Java网络的基本知识
2
2
0
14
总结
2
2
0
14
总学时
各章教学实施计划
章节题目第7章内部类与异常类
7.1节-7.6节
学时
2
教学目的、要求(分了解、理解、掌握三个层次):
1、掌握内部类、匿名类。
2、了解异常类、断言。
教学内容(包括基本内容、重点、难点):
基本内容:
◆内部类
◆匿名类
◆异常类
◆断言
教学重点:
重点是理解和子类有关的匿名类、和接口有关的匿名类。
教学难点:
难点是匿名类对象作参数。
讨论、思考题、作业:
习题7
调试例子7
预习第8章8.1-8.3节
参考书目(含参考书、文献等)具体内容:
参考书对应章节
课堂教学实施计划
第12课
教学过程设计:
复习分钟;授新课95分钟
讨论5分钟;其它分钟
授课类型(请打√):
理论课√讨论课□实验课□习题课□其它□
教学方式(请打√):
讲授√讨论□示教□指导□其它□
教学手段(请打√):
多媒体模型□实物□挂图□音像□其它√
主要内容
基本内容:
v内部类
v匿名类
v异常类
v断言
教学重点:
重点是理解和子类有关的匿名类、和接口有关的匿名类。
教学难点:
难点是匿名类对象作参数。
第7章内部类与异常类
§7.1内部类
Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。
例如:
某种类型的农场饲养了一种特殊种类的牛,但不希望其他农场饲养这种特殊种类的牛,那么这种类型的农场就可以将创建这种特殊种牛的类作为自己的内部类。
下面的例子1(Example7_1.java)中有一个RedCowForm(红牛农场)类,该类中有一个名字为RedCow(红牛)的内部类。
程序运行效果如图7.1。
例子1
RedCowForm.java
publicclassRedCowForm{
staticStringformName;
RedCowcow;//内部类声明对象
RedCowForm(){
}
RedCowForm(Strings){
cow=newRedCow(150,112,5000);
formName=s;
}
publicvoidshowCowMess(){
cow.speak();
}
classRedCow{//内部类的声明
StringcowName="红牛";
intheight,weight,price;
RedCow(inth,intw,intp){
height=h;
weight=w;
price=p;
}
voidspeak(){
System.out.println("偶是"+cowName+",身高:
"+height+"cm体重:
"+
weight+"kg,生活在"+formName);
}
}//内部类结束
}//外嵌类结束
Example7_1.java
publicclassExample7_1{
publicstaticvoidmain(Stringargs[]){
RedCowFormform=newRedCowForm("红牛农场");
form.showCowMess();
form.cow.speak();
}
}
§7.2匿名类
Java允许我们直接使用一个类的子类的类体创建一个子类对象。
7.2.1和子类有关的匿名类
创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。
假设Bank是类,那么下列代码就是用Bank的一个子类(匿名类)创建对象:
newBank(){
匿名类的类体
};
例子2
OutputAlphabet.java
abstractclassOutputAlphabet{
publicabstractvoidoutput();
}
OutputEnglish.java
publicclassOutputEnglishextendsOutputAlphabet{//输出英文字母的子类
publicvoidoutput(){
for(charc='a';c<='z';c++){
System.out.printf("%3c",c);
}
}
}
ShowBoard.java
publicclassShowBoard{
voidshowMess(OutputAlphabetshow){//参数show是OutputAlphabet类型的对象
show.output();
}
}
Example7_2.java
publicclassExample7_2{
publicstaticvoidmain(Stringargs[]){
ShowBoardboard=newShowBoard();
board.showMess(newOutputEnglish());//向参数传递OutputAlphabet的子类//OutputEnglish的对象
board.showMess(newOutputAlphabet()//向参数传递OutputAlphabet的匿名子//类的对象
{publicvoidoutput()
{for(charc='α';c<='ω';c++)//输出希腊字母
System.out.printf("%3c",c);
}
}
);//请注意分号在这里
}
}
7.2.2和接口有关的匿名类
假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。
下列代码就是用实现了Computable接口的类(匿名类)创建对象:
newComputable(){
实现接口的匿名类的类体
};
例子3
Example7_3.java
interfaceSpeakHello{
voidspeak();
}
classHelloMachine{
publicvoidturnOn(SpeakHellohello){
hello.speak();
}
}
publicclassExample7_3{
publicstaticvoidmain(Stringargs[]){
HelloMachinemachine=newHelloMachine();
machine.turnOn(newSpeakHello(){//和接口SpeakHello有关的匿名类
publicvoidspeak(){
System.out.println("hello,youarewelcome!
");
}
}
);
machine.turnOn(newSpeakHello(){//和接口SpeakHello有关的匿名类
publicvoidspeak(){
System.out.println("你好,欢迎光临!
");
}
}
);
}
}
§7.3异常类
所谓异常就是程序运行时可能出现一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理。
程序运行出现异常时,Java运行环境就用异常类Exception的相应子类创建一个异常对象,并等待处理。
异常对象可以调用如下方法得到或输出有关异常的信息:
publicStringgetMessage();
publicvoidprintStackTrace();
publicStringtoString();
§7.3.1try~catch语句
Java使用try~catch语句来处理异常,将可能出现的异常操作放在try~catch语句的try部分,将发生异常后的处理放在catch部分。
try~catch语句的格式如下:
try{
包含可能发生异常的语句
}
catch(ExceptionSubClass1e){
…
}
catch(ExceptionSubClass2e){
…
}
带finally子语句的try~catch语句,语法格式如下:
try{}
catch(ExceptionSubClasse){}
finally{}
其执行机制是在执行try~catch语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。
例子4
Example7_4.java
publicclassExample7_4{
publicstaticvoidmain(Stringargs[]){
intn=0,m=0,t=1000;
try{m=Integer.parseInt("8888");
n=Integer.parseInt("ab89");//发生异常,转向catch
t=7777;//t没有机会被赋值
}
catch(NumberFormatExceptione){
System.out.println("发生异常:
"+e.getMessage());
}
System.out.println("n="+n+",m="+m+",t="+t);
try{System.out.println("故意抛出I/O异常!
");
thrownewjava.io.IOException("我是故意的");//故意抛出异常
//System.out.println("这个输出语句肯定没有机会执行,必须注释,否则编译出错");
}
catch(java.io.IOExceptione){
System.out.println("发生异常:
"+e.getMessage());
}
}
}
§7.3.2异常的声明
一个方法不处理它产生的异常,而是沿着调用层次向上传递,由调用它的方法来处理这些异常,叫声明异常.
声明异常的方法:
在产生异常的方法名后面加上要抛出(throws)的异常的列表:
如:
voidcompute(intx)throwsArithmeticException
{//这里有异常发生,但是并没有处理…}
例子5
BankException.java
publicclassBankExceptionextendsException{
Stringmessage;
publicBankException(intm,intn){
message="入账资金"+m+"是负数或支出"+n+"是正数,不符合系统要求.";
}
publicStringwarnMess(){
returnmessage;
}
}
Bank.java
publicclassBank{
privateintmoney;
publicvoidincome(intin,intout)throwsBankException{
if(in<=0||out>=0||in+out<=0){
thrownewBankException(in,out);//方法抛出异常,导致方法结束
}
intnetIncome=in+out;
System.out.printf("本次计算出的纯收入是:
%d元\n",netIncome);
money=money+netIncome;
}
publicintgetMoney(){
returnmoney;
}
}
Example7_5.java
publicclassExample7_5{
publicstaticvoidmain(Stringargs[]){
Bankbank=newBank();
try{bank.income(200,-100);
bank.income(300,-100);
bank.income(400,-100);
System.out.printf("银行目前有%d元\n",bank.getMoney());
bank.income(200,100);
bank.income(99999,-100);
}
catch(BankExceptione){
System.out.println("计算收益的过程出现如下问题:
");
System.out.println(e.warnMess());
}
System.out.printf("银行目前有%d元\n",bank.getMoney());
}
}
§7.4断言
断言语句用于调试代码阶段。
在调试代码阶段让断言语句发挥作用,这样就可以发现一些致命的错误,当程序正式运行时就可以关闭断言语句,但仍把断言语句保留在源代码中,如果以后应用程又需要调试,可以重新启用断言语句。
使用关键字assert声明一条断言语句,断言语句有以下两种格式:
assertbooleanExpression;
assertbooleanExpression:
messageException;
例子6
Example7_6.java
importjava.util.Scanner;
publicclassExample7_6{
publicstaticvoidmain(Stringargs[]){
int[]score={-120,98,89,120,99};
intsum=0;
for(intnumber:
score){
assertnumber>=0:
"负数不能是成绩";
sum=sum+number;
}
System.out.println("总成绩:
"+sum);
}
}
7.5应用举例
分析例题7,然后让学生自己调试,提出自己的理解。
总结
Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。
和某类有关的匿名类就是该类的一个子类,该子类没有明显的用类声明来定义,所以称做匿名类。
和某接口有关的匿名类就是实现该接口的一个类,该子类没有明显的用类声明来定义,所以称做匿名类。
Java使用try~catch语句来处理异常,将可能出现的异常操作放在try~catch语句的try部分,当try部分中的某个方法调用发生异常后,try部分将立刻结束执行,而转向执行相应的catch部分。
作业
习题7,调试例子7
预习第8章8.1-8.3节
本章结束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教案 Java 语言程序设计 56 学时