第4章 面向对象下教学设计Word格式文档下载.docx

上传人:b****3 文档编号:6402289 上传时间:2023-05-06 格式:DOCX 页数:16 大小:76.38KB
下载 相关 举报
第4章 面向对象下教学设计Word格式文档下载.docx_第1页
第1页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第2页
第2页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第3页
第3页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第4页
第4页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第5页
第5页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第6页
第6页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第7页
第7页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第8页
第8页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第9页
第9页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第10页
第10页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第11页
第11页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第12页
第12页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第13页
第13页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第14页
第14页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第15页
第15页 / 共16页
第4章 面向对象下教学设计Word格式文档下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第4章 面向对象下教学设计Word格式文档下载.docx

《第4章 面向对象下教学设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第4章 面向对象下教学设计Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。

第4章 面向对象下教学设计Word格式文档下载.docx

第一课时

(继承的概念、方法重写、super关键字、final关键字)

继承的概念

✧现实生活中的继承关系

在现实生活中,继承一般指的是子女继承父辈的财产。

在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。

例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物,同理,波斯猫和巴厘猫继承自猫,而沙皮狗和斑点狗继承自狗。

这些动物之间会形成一个继承体系,如下图所示。

✧概念总结

在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。

在程序中,如果想声明一个类继承另一个类,需要使用extends关键字,具体示例如下:

//定义Animal类

classAnimal{

Stringname;

//定义name属性

//定义动物叫的方法

voidshout(){

System.out.println("

动物发出叫声"

);

}

}

//定义Dog类继承Animal类

classDogextendsAnimal{

//定义一个打印name的方法

publicvoidprintName(){

name="

+name);

上述示例代码中,Dog类通过extends关键字继承了Animal类,这样Dog类便是Animal类的子类。

✧需要注意的问题

在Java中,类的继承需要注意的问题,具体如下:

●类只支持单继承,不允许多重继承

●多个类可以继承一个父类

●多层继承是可以的,即一个类的父类可以再去继承另外的父类

●子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,

也可以是另一个类的子类

方法重写

在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写,具体示例如下:

classAnimal{

//定义动物叫的方法

voidshout(){

//定义Dog类继承动物类

classDogextendsAnimal{

//定义狗叫的方法

汪汪……"

以上示例代码中,定义了Dog类并且继承自Animal类,在子类Dog中定义了一个shout()方法对父类的方法进行重写。

super关键字

✧super关键字的概念

当子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这个问题,在Java中专门提供了一个super关键字用于访问父类的成员。

✧super关键字的作用

●super关键字可以调用父类的成员变量和成员方法,格式如下:

super.成员变量

super.成员方法([参数1,参数2…])

●super关键字可以调用父类的构造方法,格式如下:

super([参数1,参数2…])

值得注意的是,在子类的构造方法中通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类对象时,会自动调用父类无参的构造方法。

final关键字

✧final关键字修饰类

Java中的类被final关键字修饰后,该类将不可以被继承,也就是不能够派生子类。

✧final关键字修饰方法

当一个类的方法被final关键字修饰后,这个类的子类将不能重写该方法。

✧final关键字修饰变量

Java中被final修饰的变量为常量,它只能被赋值一次,也就是说final修饰的变量一旦被赋值,其值不能改变。

第二课时

(抽象类、接口、多态、对象的类型转换)

抽象类

✧抽象类和抽象方法的概念

当定义一个类时,常常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的。

这时,可以将该类定义为抽象类,即使用关键字abstract修饰的类。

例如:

abstractclassAnimal{

同理,使用关键字abstract修饰的方法称为抽象方法,抽象方法不包含方法体,例如:

abstractvoidshout();

//定义抽象方法shout()

值得注意的是,包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法,只需使用abstract关键字来修饰即可。

另外,抽象类是不可以被实例化的。

接口

✧接口的概念

如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方式来定义,即接口。

在定义接口时,需要使用interface关键字来声明,具体示例如下:

interfaceAnimal{

intID=1;

//定义全局常量

voidbreathe();

//定义抽象方法

voidrun();

上面的代码中,Animal即为一个接口。

接口中定义的方法和变量都包含一些默认修饰符,方法默认使用“publicabstract”来修饰,即抽象方法。

变量默认使用“publicstaticfinal”来修饰,即全局常量。

✧接口的特点

为了加深对接口的认识,对接口的特点进行归纳,具体如下:

●接口中的方法都是抽象的,不能实例化对象。

●当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方

法即可,否则需要实现接口中的所有方法。

●一个类通过implements关键字实现接口时,可以实现多个接口,被实

现的多个接口之间要用逗号隔开。

●一个类在继承另一个类的同时还可以实现接口,此时,extends关键字

必须位于implements关键字之前。

●一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔

开。

多态

在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态。

在Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果,接下来通过一个案例来演示,具体如下:

//定义接口Anmal

interfaceAnimal{

voidshout();

//定义抽象shout()方法

//定义Cat类实现Animal接口

classCatimplementsAnimal{

//实现shout()方法

publicvoidshout(){

喵喵……"

//定义Dog类实现Animal接口

classDogimplementsAnimal{

//实现shout()方法

//定义测试类

publicclassExample13{

publicstaticvoidmain(String[]args){

Animalan1=newCat();

//创建Cat对象

Animalan2=newDog();

//创建Dog对象

animalShout(an1);

//将an1作为参数传入

animalShout(an2);

//将an2作为参数传入

//定义静态的animalShout()方法,接收一个Animal类型的参数

publicstaticvoidanimalShout(Animalan){

an.shout();

//调用实际参数的shout()方法

运行结果如下图所示。

从图中可以看到,将父类引用的两个不同子类对象分别传入,结果打印出了“喵喵”和“汪汪”。

由此可见,多态不仅解决了方法同名的问题,而且还使程序变的更加灵活,从而有效的提高程序的可扩展性和可维护性。

对象的类型转换

在多态的学习中,涉及到将子类对象当做父类类型使用的情况。

将子类对象当做父类使用时不需要任何显式地声明,在进行类型转换时可能出现错误。

这时,可以使用关键字instanceof,它可以判断一个对象是否为某个类(或接口)的实例或者子类实例,语法格式如下:

对象(或者对象引用变量)instanceof类(或接口)

第三课时

(Object类、匿名内部类、异常)

Object类

✧概述

在JDK中提供了一个Object类,它是所有类的父类,即每个类都直接或间接继承自该类。

✧toString()方法

Object类的toString()方法中的代码具体如下:

getClass().getName()+"

@"

+Integer.toHexString(hashCode());

✧重写toString()方法

在实际开发中,通常希望对象的toString()方法返回的不仅仅是基本信息,而是一些特有的信息,这时可以重写Object的toString()方法。

匿名内部类

匿名内部类可以实现接口,并进行实例化,语法格式如下:

new父类(参数列表)或父接口(){

//匿名内部类实现部分

异常

✧异常概述

在Java语言中,引入了异常,以异常类的形式对这些非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理。

✧异常继承体系

下图展示了Throwable类的继承体系:

从上图可以看出,Throwable有两个直接子类,具体如下:

●Error类:

称为错误类,它表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的。

●Exception类:

称为异常类,它表示程序本身可以处理的错误,在开发

Java程序中进行的异常处理,都是针对Excption类及其子类。

在Exception类的众多子类中有一个特殊的RuntimeException类,该类及其子类用于表示运行时异常,除了此类,Exception类下所有其它的子类都用于表示编译时异常。

✧try…catch和finally

由于发生了异常,程序立即终止,无法继续向下执行。

为了解决这样的问题,Java中提供了一种对异常进行处理的方式——异常捕获。

异常的捕获是通过try…catch语句完成,其语法格式如下所示:

try{

//程序代码块

}catch(ExceptionType(Exception类及其子类)e){

//对ExceptionType的处理

}

注意:

在try代码块中,发生异常语句后面的代码是不会被执行的。

✧finally

有时候我们希望有些语句无论程序是否发生异常都要执行,这时就可以在try…catch语句后,加一个finally代码块。

需要注意的是,finally中的代码块有一种情况下是不会执行的,那就是在try...catch中执行了System.exit(0)语句。

✧throws关键字

Java中允许在方法的后面使用throws关键字对外声明该方法有可能发生的异常,这样调用者在调用方法时,就明确地知道该方法有异常,并且必须在程序中对异常进行处理,throws关键字声明抛出异常的语法格式如下:

修饰符返回值类型方法名([参数1,参数2.....])throws

ExceptionType1[,ExceptionType2.....]{

如果不知道如何处理声明抛出的异常,也可以使用throws关键字继续将异常抛出。

✧编译时异常与运行时异常

●编译时异常

在Java中,Exception类中除了RuntimeException类及其的子类都是编译时异常。

编译时异常的特点是Java编译器会对其进行检查,如果出现异常就必须对异常进行处理,否则程序无法通过编译。

处理编译时期的异常有两种方式,具体如下:

(1)使用try…catch语句对异常进行捕获

(2)使用throws关键字声明抛出异常,调用者对其处理。

●运行时异常

RuntimeException类及其子类都是运行时异常。

运行时异常的特点是Java编译器不会对其进行检查,也就是说,当程序中出现这类异常时,即使没有使用try..catch语句捕获或使用throws关键字声明抛出,程序也能编译通过。

运行时异常一般是由于程序中的逻辑错误引起的,在程序运行时无法恢复。

✧自定义异常

JDK中定义了大量的异常类,虽然这些异常类可以描述编程时出现的大部分异常情况,但是在程序开发中有时可能需要描述程序中特有的异常情况。

为了解决这个问题,在Java中允许用户自定义异常,自定义的异常类必须继承自Exception或其子类。

自定义异常的使用需要用到throw关键字,throw关键字用于在方法中声明抛出异常的实例对象,其语法格式如下:

throwException异常对象

第四课时

(包的声明与使用、import语句、给Java应用打包、访问控制)

包的声明与使用

✧包的声明

在程序开发中,需要将编写的类分目录存放便于管理,为此,Java引入了包(package)机制,程序可以通过声明包的方式对Java类定义目录。

声明包的语法格式如下所示:

packagecn.itcast.chapter04;

//使用package关键字声明包

publicclassExample01{…}

包的声明只能位于Java源文件的第一行。

✧包机制管理Java的类文件

当编译一个声明了包的Java源文件,需要使用命令生成与包名对应的目录,具体示例如下:

javac–d.Example01.java

其中,“-d”用来指定生成的类文件的位置,“.”表示在当前目录,整行命令表示生成带包目录的.class文件并存放在当前目录下,当然,生成的类文件还可以存放在其它目录下,这时只需要将“.”用其它路径替换即可。

具体示例如下:

javac–dD:

\cn\itcast\chapter04Example01.java

import语句

✧import语法

Java中提供了import关键字,使用import可以在程序中一次导入某个指定包下的类,具体格式如下所示:

import包名.类名;

import通常出现在package语句之后,类定义之前。

✧Java常用包

在JDK中,不同功能的类都放在不同的包中,其中Java的核心类主要放在java这个包以及其子包下,Java扩展的大部分类都放在javax包以及其子包下。

接下来简单介绍Java语言中的常用包,具体如下:

●java.util:

包含Java中大量工具类、集合类等

●:

包含Java网络编程相关的类和接口。

●java.io:

包含了Java输入、输出有关的类和接口。

●java.awt:

包含用于构建图形界面(GUI)的相关类和接口。

●java.lang:

包含Java语言的核心类,如String、Math、System和Thread

类等,使用这个包中的类无须使用import语句导入,系统会自动导入这个包下的所有类。

给Java应用打包

在JDK中提供了一个jar命令,使用这个命令能够将这些类打包成一个文件,这个文件的扩展名为.jar,被称为jar文件。

jar文件的全称是JavaArchiveFile,它是一种压缩文件,独立于任何操作系统平台,习惯上也将jar文件称为jar包。

将Java应用打包为Jar包,有很多好处,具体如下:

●安全:

可以对jar文件进行数字签名,让可识别数字签名的用户使用。

●可移植性:

只要有Java虚拟机,jar包就可以在任何平台上运行。

●节省空间:

当把.class文件打成jar压缩文件,会节省空间,如果将jar文件在网络上传输,也会加快传输速率。

访问控制

在Java中,针对类、成员方法和属性提供了四种访问级别,分别是private、default、protected和public。

接下来通过一个图将这四种控制级别由小到大依次列出,如下图所示。

图中展示的四种访问控制级别,具体介绍如下。

●private(类访问级别):

如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问。

类的良好封装就是通过private关键字来实现的。

●default(包访问级别):

如果一个类或者类的成员不使用任何访问控制符修饰,则称它为默认访问控制级别,这个类或者类的成员只能被本包中的其它类访问。

●protected(子类访问级别):

如果一个类的成员被protected访问控制符修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问。

●public(公共访问级别):

这是一个最宽松的访问控制级别,如果一个

类或者类的成员被public访问控制符修饰,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在同一个包中。

接下来通过一个表将这四种访问级别更加直观的表示出来,如下表所示。

访问范围

private

default

protected

public

同一类中

同一包中

子类中

全局范围

第五课时

上机练习(总结、测试题)

1、总结本章内容

2、通过题库发放相关测试题,检查学生掌握情况。

3、上机练习:

主要针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。

上机一:

(考察知识点为类的继承)

请按照以下要求设计类。

要求如下:

1)设计Animal类。

类中定义一个成员变量animalName,表示动物的名称,变量animalName是String类型,默认初始值。

在该类中再定义一个成员方法shout(),表示动物发出叫声的行为,该方法能输出名称为name的动物发出叫声,例如输出“波斯猫发出叫声”。

2)设计Cat类。

使用关键字extends继承Animal类。

Cat类中定义一个public类型的构造方法,该构造方法拥有一个String类型的参数catName,通过该参数,为Cat类中继承自Animal类的animalName成员变量赋值

3)设计一个测试类。

类名为ExtendsTest,在main方法中定义一个String类型的name变量,并为它赋值为”波斯猫”,然后使用有参构造创建Cat类的对象,并使用对象的引用变量调用shout()方法

第六课时

上机练习(测试题)

上机一:

(考察知识点为接口的实现)

1)设计Inter接口,在接口中定义一初始值为20的num常量和method()抽象方法。

2)设计InterImpl类,使用关键字implements实现Inter接口,并在method()方法实现for循环,在循环体内输出num--的值,直到num=0。

3)设计一个测试类InterfaceTest,在main方法中创建InterImpl的实例对象,并调用method()方法。

思考题和习题

见教材第四章后的习题

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2