收藏 分享(赏)

第4章 面向对象(下)_补充案例.doc

上传人:gnk289057 文档编号:6995790 上传时间:2019-04-29 格式:DOC 页数:30 大小:315.50KB
下载 相关 举报
第4章 面向对象(下)_补充案例.doc_第1页
第1页 / 共30页
第4章 面向对象(下)_补充案例.doc_第2页
第2页 / 共30页
第4章 面向对象(下)_补充案例.doc_第3页
第3页 / 共30页
第4章 面向对象(下)_补充案例.doc_第4页
第4页 / 共30页
第4章 面向对象(下)_补充案例.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、博学谷让 IT 教学更简单,让 IT 学习更有效1第四章 补充案例案例 4-1 类的继承一、案例描述1、 考核知识点编号:00104001名称:类的继承2、 练习目标 了解类继承的意义和作用 掌握如何实现类的继承3、 需求分析在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。为了让初学者熟悉类的继承,本案例将演示类的继承并编写测试类验证子类是否拥有父类的可继承成员。4、 设计思路(实现原理)1)设计两个类 Student 和 Teacher2)抽取两个类共同的内容(如:吃饭、睡觉)封装到一个类 Person 中,各自特有的部分保留在各自类中。3)让学生类继承

2、 Person 类,老师类也继承 Person。4)编写测试类 Example01,测试 Student 类和 Teacher 是否继承了 Person 类的成员。二、案例实现1、抽取父类 Person,实现继承关系,代码如下:class Person String name;/姓名/ 吃饭的功能void eat() System.out.println(“吃饭 “);/ 睡觉的功能void sleep() System.out.println(“睡觉“);博学谷让 IT 教学更简单,让 IT 学习更有效2class Student extends Person / 学号int sid;cla

3、ss Teacher extends Person / 工号int tid;/ 教课的功能void teach() System.out.println(“老师教课“);2、定义测试类 Example01,代码如下:public class Example01public static void main(String args) Student s = new Student();s.eat();s.sleep();System.out.println(“-“);Teacher t = new Teacher();t.eat();t.sleep();t.teach();运行结果如图 4-1

4、所示。图 4-1 运行结果三、案例总结1、在 Java 中,多个类可以继承一个父类,但是一个类不能直接继承多个类,一个类只能有一个直接父类。2、父类是由子类不断抽取而来的,不断地抽取就形成了体系结构,这个结构称为继承体系结构。3、子类在继承父类的时候,会自动拥有父类所有的成员。博学谷让 IT 教学更简单,让 IT 学习更有效34、继承的好处是划分了类的层次性,实现了代码重用、扩展了程序功能。案例 4-2 方法的重写一、案例描述1、 考核知识点编号:00104002名称:方法的重写2、 练习目标 了解方法重写的意义和作用 掌握如何进行方法重写3、 需求分析在继承关系中,子类会自动继承父类中定义的

5、方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。为了让初学者掌握方法的重写,本案例将编写一个类 NewPhone,该类继承 Phone 类并对 Phone 类的 call()方法进行重写。4、 设计思路(实现原理)1)定义一个类 Phone,编写方法 call(),表示打电话功能2)定义一个 Phone 的子类 NewPhone,重写父类 call()方法,让它除了打电话功能外还具有开启语言和关闭语言功能。3)编写一个测试类 Example02,分别调用重写前和重写后的 call()方法二、案例实现1、定义 Phone 及其子类 NewPhone,子类对父类中的 ca

6、ll()方法重写,代码如下:class Phone void call() System.out.println(“打电话“);class NewPhone extends Phone void call() System.out.println(“开启语音“);super.call();System.out.println(“关闭语音“);2、定义测试类 Example02,代码如下:public class Example02public static void main(String args) System.out.println(“-重写前-“);Phone phone = new

7、Phone();博学谷让 IT 教学更简单,让 IT 学习更有效4phone.call();System.out.println(“-重写后-“);Phone newPhone = new NewPhone();newPhone.call();运行结果如图 4-2 所示。图 4-2 运行结果三、案例总结1、子类中需要对继承自父类的方法进行一些修改,这时就用到方法重写。2、在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。3、子类方法的访问修饰权限不能小于父类的。4、重写的主要优点是能够定义子类特有的特征。案例 4-3 super 访问父类成员变量一、案例描述1、

8、 考核知识点编号:00104003名称:super 关键字2、 练习目标 掌握使用 super 关键字访问父类成员变量3、 需求分析子类可以继承父类的非私有成员变量,如果在子类中修改了继承自父类的成员变量的值,再想要访问父类的该成员变量时,可以通过 super.成员变量来实现。为了让初学者熟悉 super 关键字的用法,本案例将分别设计 Fu 类及其子类 Zi,并在 Zi 类的方法中使用 super 关键字访问 Fu 类的成员变量。4、 设计思路(实现原理)1)编写一个 Fu 类,在类中定义无参构造和一个初始值为 20 的 num 成员变量。2)Zi 类继承 Fu 类,在子类中对 num 值进

9、行了修改,同时在子类中定义无参构造和一个无返回值的 method()方法,method()方法中使用 super 关键字调用了 Fu 类的 num 成员变量。3)定义测试类 Example03。博学谷让 IT 教学更简单,让 IT 学习更有效5二、案例实现1、编写 Fu 类及其子类 Zi,在 Zi 类中使用 super 关键字调用 Fu 类成员变量,代码如下class Fu Fu() int num = 20;class Zi extends Fu Zi() int num = 30;/ 修改 num 的值void method() System.out.println(“method“);/

10、 super 关键字调用父类成员变量System.out.println(“Fu 类中 num 值为:“ + super.num);System.out.println(“Zi 类中 num 值为:“ + num);2、定义测试类 Example03,代码如下:class Example03public static void main(String args) Zi z = new Zi();z.method();运行结果如图 4-3 所示。图 4-3 运行结果三、案例总结1、使用 super 关键字调用父类的成员方法。具体格式如下:super.成员变量2、被调用的父类成员变量,必须是非 p

11、rivate 的。博学谷让 IT 教学更简单,让 IT 学习更有效6案例 4-4 super 访问父类成员方法一、案例描述1、 考核知识点编号:00104003名称:super 关键字2、 练习目标 掌握使用 super 关键字访问父类成员方法3、 需求分析子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这个问题,在 Java中专门提供了一个 super 关键字用于访问父类的成员。为了让初学者熟悉 super 关键字的用法,本案例将分别设计 Fu 类及其子类 Zi,在 Zi 类的方法中使用 super 关键字访问 Fu 类的成员方法。4、 设计思路(实现原理)1)编写一个 F

12、u 类,在类中定义无参构造和一个无返回值的 show()方法。2)Zi 类继承 Fu 类,子类中定义无参构造和一个无返回值的 method()方法,method()方法中使用super 关键字调用了 Fu 类的 show()方法。3)定义测试类 Example04。二、案例实现1、编写 Fu 类及其子类 Zi,在 Zi 类中使用 super 关键字调用 Fu 类成员方法,代码如下:class Fu Fu() void show() System.out.println(“Fu show“);class Zi extends Fu Zi() void method() System.out.pr

13、intln(“Zi method“);/ super 关键字调用父类成员方法super.show();2、定义测试类 Example04,代码如下:class Example04public static void main(String args) Zi z = new Zi();z.method();博学谷让 IT 教学更简单,让 IT 学习更有效7运行结果如图 4-4 所示。图 4-4 运行结果三、案例总结1、使用 super 关键字调用父类的成员方法。具体格式如下:super.成员方法(参数 1,参数 2)2、被调用的父类成员方法,必须是非 private 的。案例 4-5 super

14、 访问父类构造方法一、案例描述1、 考核知识点编号:00104003名称:super 关键字2、 练习目标 掌握如何在子类构造方法中使用 super 关键字访问父类构造方法3、 需求分析在子类的构造方法中一定会调用父类的某个构造方法,如果想指定调用类父类中的哪个构造方法,可以使用 super 关键字来实现。为了让初学者掌握 super 关键字的用法,本案例将分别设计 Fu 类及其子类 Zi,在 Zi 类的构造方法中使用 super 关键字访问 Fu 类的构造方法。4、 设计思路(实现原理)1)编写一个 Fu 类,在类中定义无参构造。2)Zi 类继承 Fu 类,子类中也定义无参构造方法,在构造方

15、法中使用 super 关键字调用 Fu 类的构造方法。3)定义测试类 Example05。二、案例实现1、编写 Fu 类及其子类 Zi,在 Zi 类构造中使用 super 关键字调用 Fu 类构造方法,代码如下:class Fu Fu() System.out.println(“Fu 类构造方法!“);博学谷让 IT 教学更简单,让 IT 学习更有效8class Zi extends Fu Zi() super();/在子类构造中调用父类构造System.out.println(“Zi 类构造方法!“);2、定义测试类 Example05,代码如下:public class Example05

16、public static void main(String args) Zi zi = new Zi();运行结果如图 4-5 所示。图 4-5 运行结果三、案例总结1、通过 super 调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。2、在子类的构造方法中通过 super 指定调用父类的哪个构造方法,如果没有指定,在实例化子类对象时,会自动调用父类无参的构造方法。3、被调用的父类构造方法,必须是非 private 的。案例 4-6 final 修饰类一、案例描述1、 考核知识点编号:00104004名称:final 关键字2、 练习目标 了解 final 关键字修饰类

17、的特点 掌握 final 关键字修饰类的用法3、 需求分析Java 中的类被 final 关键字修饰后,该类将不可以被继承,也就是不能够派生子类。为了让初学者熟悉 final 关键字修饰类的用法,本案例将分别设计两个类,一个是使用 final 关键字修饰的 Fu 类,另一个是继承 Fu 类的 Zi 类,验证 final 关键字修饰的类是否能被继承。博学谷让 IT 教学更简单,让 IT 学习更有效94、 设计思路(实现原理)1)编写一个 final 关键字修饰的 Fu 类,类体可以为空2)编写 Zi 类,Zi 类继承于 Fu 类,类体可以为空3)定义测试类 Example06。二、案例实现1、编

18、写 final 修饰的 Fu 类,Zi 类继承 Fu 类,代码如下:final class Fu / 类体为空代码/Zi 类继承 final 修饰的 Fu 类class Zi extends Fu / 类体为空代码2、定义测试类 Example06,代码如下:public class Example06public static void main(String args) Zi zi = new Zi();运行结果如图 4-6 所示。图 4-6 运行结果三、案例总结在 Java 中,被 final 关键字修饰的类为最终类,不能被其它类继承。案例 4-7 final 修饰方法一、案例描述1、

19、考核知识点编号:00104004名称:final 关键字2、 练习目标博学谷让 IT 教学更简单,让 IT 学习更有效10 掌握使用 final 关键字修饰方法3、 需求分析子类可以继承父类的成员方法,并在必要时对方法进行重写,增加了方法的扩展的同时也打破了方法的封装,如果我们希望父类中的某些方法不能被重写,这时就可以使用 final 关键字来修饰。为了让初学者掌握使用 final 关键字修饰方法,本案例将分别设计两个类,一个是 Fu 类,其中定义了final 修饰的 show()方法,另一个是继承 Fu 类的 Zi 类,在 Zi 类中对 show()方法进行重写。4、 设计思路(实现原理)1

20、)编写一个 Fu 类,类中定义 final 修饰的 show()方法。2)编写 Zi 类,Zi 类继承于 Fu 类,在 Zi 类中对 show()方法进行重写3)定义测试类 Example07,创建 Zi 类对象,并调用 Zi 类 show()方法。二、案例实现1、编写 Fu 类及其子类 Zi 类,在 Zi 类中对 show()方法重写,代码如下:class Fu /final 关键字修饰的方法public final void show() System.out.println(“这是绝密资源“);class Zi extends Fu /重写父类中 final 修饰的方法public vo

21、id show() System.out.println(“这是一堆垃圾,给处理了“);2、定义测试类 Example07,代码如下:public class Example07public static void main(String args) Zi z = new Zi();z.show();运行结果如图 4-7 所示。图 4-7 运行结果博学谷让 IT 教学更简单,让 IT 学习更有效11三、案例总结当一个类的方法被 final 关键字修饰后,这个类的子类将不能重写该方法。案例 4-8 final 修饰局部变量一、案例描述1、 考核知识点编号:00104004名称:final 关键字

22、2、 练习目标 掌握使用 final 关键字修饰局部变量3、 需求分析Java 中被 final 修饰的变量为常量,它只能被赋值一次,也就是说 final 修饰的变量一旦被赋值,其值不能改变。为了让初学者掌握使用 final 关键字修饰局部变量,本案例将在类的方法中定义一个final 修饰的局部变量,并试着对该变量重新赋值。4、 设计思路(实现原理)1)编写一个 Example08 类,类中定义类一个 final 修饰的局部变量 age,为其赋初始值为 18。2)为 age 重新赋值为 20。二、案例实现1、编写类 Example08,代码如下public class Example08pub

23、lic static void main(String args) final int age = 18; / 第一次可以赋值age = 20; / 再次赋值会报错编译错误,如图 4-8 所示。图 4-8 错误提示博学谷让 IT 教学更简单,让 IT 学习更有效12三、案例总结final 修饰的变量表示常量,一经定义就不能重新赋值。案例 4-9 final 修饰成员变量一、案例描述1、 考核知识点编号:00104004名称:final 关键字2、 练习目标 掌握使用 final 关键字修饰成员变量3、 需求分析在 Java 中,final 修饰的变量表示常量,一经定义就不能重新赋值。为了让初学

24、者熟悉 final 修饰变量的情况,本案例将使用 final 关键字修饰成员变量,观察其是否能够再次赋值。4、 设计思路(实现原理)1)编写一个 Fu 类,父类中定义一个变量 X,并用 final 关键字修饰变量。2)编写 Zi 类,Zi 类继承于 Fu 类,在子类中对常量再赋新值。3)定义测试类 Example09,观察运行结果。二、案例实现1、编写 Fu 类及其子类 Zi 类,在 Zi 类中对 X 再赋值,代码如下:class Fu /final 修饰的变量,也就是常量public final int X = 10;class Zi extends Fu X = 20;/在子类中对常量再赋

25、新值public void method() System.out.println(X);2、定义测试类 Example09,代码如下:public class Example09public static void main(String args) Zi z = new Zi();z.method();博学谷让 IT 教学更简单,让 IT 学习更有效13编译错误,结果如图 4-9 所示。图 4-9 错误提示三、案例总结在本案例中 Zi 类中对变量 X 再次赋值,运行结果报错。这是因为 Java 中被 final 修饰的变量为常量,它只能被赋值一次,也就是说 final 修饰的变量一旦被赋值

26、,其值不能改变。如果再次对该变量进行赋值,则程序会在编译时报错。案例 4-10 接口的实现一、案例描述1、 考核知识点编 号:00104006名 称:接口2、 练习目标 掌握如何实现接口3、 需求分析由于接口中的方法都是抽象方法,因此不能通过实例化对象的方式来调用接口中的方法。此时需要定义一个类,并使用 implements 关键字实现接口中所有的方法。为了上初学者掌握如何实现接口,本案例将设计一个类,使用关键字 implements 实现 Inter 接口中的方法。4、 设计思路(实现原理)1)设计名为 Inter 的接口,接口中定义一个初始值为 20 的 num 常量和 method()抽

27、象方法。2)编写 Inter 接口的实现类 InterImpl,使用 implements 关键字实现接口中的方法。3)编写测试类 Example10,测试类中对接口的实现类进行实例化,并调用接口中的方法。二、案例实现1、编写接口 Inter,InterImpl 类使用 implements 实现了接口,代码如下:/定义一个接口interface Inter int num = 20;void method();博学谷让 IT 教学更简单,让 IT 学习更有效14/ 使用 implements 关键字实现接口class InterImpl implements Inter void show(

28、) System.out.println(num);public void method() System.out.println(“InterImpl method“);2、定义测试类 Example10,代码如下:class Example10public static void main(String args) /通过实现类实例化InterImpl ii = new InterImpl();ii.show();ii.method();运行结果如图 4-10 所示。图 4-10 运行结果三、案例总结1、接口使用 interface 关键字来定义。2、接口没有构造方法,接口中的变量缺省都是

29、使用 public static final 修饰的,即全局常量,接口中的方法都是 public abstract 修饰的,即抽象方法。3、定义一个类,并使用 implements 关键字实现接口中的方法,一个类可以实现多个接口。4、由于接口中的方法都是抽象方法,因此不能直接通过实例化对象的方式来调用接口中的方法,需要在类实现接口后借助类来间接实例化。案例 4-11 接口的继承一、案例描述1、 考核知识点编 号:00104007名 称:接口的继承与多实现博学谷让 IT 教学更简单,让 IT 学习更有效152、 练习目标 掌握接口继承的方式及其特点3、 需求分析在程序中,可以定义一个接口使用 e

30、xtends 关键字去继承另一个接口。为了加深初学者对结果的理解,本案例将演示接口与接口、类与接口的继承和实现关系。4、 设计思路(实现原理)1)设计接口 Phone 代表传统手机,在接口中定义 receiveMessages()和 call()抽象方法。2)设计接口 SmartPhone 代表智能手机,在接口中定义 faceTime()方法,并使用 extends 关键字继承 Phone 接口,使其具有 Phone 接口的所有功能。3)设计类 MIPhone 表示小米手机,类中定义 useMIUI()方法,并实现 SmartPhone 接口的所有方法。4)编写测试类 Example11,测试

31、类中对 MIPhone 进行实例化,并访问小米手机具有的各种功能。二、案例实现1、编写接口 Phone 和 SmartPhone、类 MIPhone。代码如下:interface Phone void receiveMessages();void call();interface SmartPhone extends Phone void faceTime();class MIPhone implements SmartPhone public void receiveMessages() System.out.println(“接收短息“);public void call() System

32、.out.println(“语音通话“);public void faceTime() System.out.println(“视频通话“);public void useMIUI() System.out.println(“使用 MIUI“);2、定义测试类 Example11,代码如下:public class Example11 public static void main(String args) MIPhone miPhone = new MIPhone();miPhone.receiveMessages();博学谷让 IT 教学更简单,让 IT 学习更有效16miPhone.ca

33、ll();miPhone.faceTime();miPhone.useMIUI();运行结果如图 4-11 所示。图 4-11 运行结果三、案例总结接口与接口之间的继承关系,可以是单继承,也可以是多继承;一个接口可以通过 extends 关键字继承多个接口,接口之间用逗号隔开。案例 4-12 Object 类一、案例描述1、 考核知识点编 号:00104008名 称:Object 类2、 练习目标 了解什么是 Object 类 掌握 Object 类中常用方法的使用3、 需求分析在 JDK 中提供了一个 Object 类,它是所有类的父类,即每个类都直接或间接继承自该类。Object类自身的

34、equals()方法比较的是内存地址值,相当于“=” ,但是在实际开发中我们很少比较两个对象的地址值,这时候常常就需要根据自身需求来重写 equals()方法。为了方便初学者学习 Object 类,本案例将演示如何重写 equals()方法。4、 设计思路(实现原理)1)设计 Student 类,定义 sid 变量表示学号,重写 equals()方法,判断进行比较的两个学生对象学号是否相同,相同即为同一个学生,否则不是。2)编写测试类 Example12,创建两个 Student 的对象 Lily 和 Lucy,并分别调用 setter 方法为学号赋值,最后通过打印语句,输出这两个对象通过“=

35、”和重写后的 equals()方法比较后的结果。博学谷让 IT 教学更简单,让 IT 学习更有效17二、案例实现1、编写 Student 类,重写 equals()方法。代码如下:class Student Student() / 学号private int sid;public void setSid(int sid) this.sid = sid;public int getSid() return sid;/ 我们的需求是学号相同的人就是同一个人.public boolean equals(Object obj) / 判断是否为当前对象if (this = obj) return tru

36、e;/ 为了呈现的健壮性,加入类型判断if (!(obj instanceof Student) return false;Student s = (Student) obj; return (this.sid = s.sid);2、定义测试类 Example12,为学号赋值,并打印使用“=”和重写 equals()方法的比较结果,代码如下:public class Example12 public static void main(String args) Student Lily = new Student();Lily.setSid(200);Student Lucy = new Stu

37、dent();Lucy.setSid(200);System.out.println(“Lily = Lucy“+“tt“+(Lily = Lucy);System.out.println(“Lily.equals(Lucy)“+“t“+Lily.equals(Lucy);运行结果如图 4-12 所示。博学谷让 IT 教学更简单,让 IT 学习更有效18图 4-12 运行结果三、案例总结1、Object 类是 Java 中所有类的父类,每个类都直接或间接继承自该类。2、Object 类中的 equals()方法比较的是内存地址值,和“= ”比较结果一致。底层代码如下:public boolea

38、n equals(Object obj) return (this = obj);实际开发中很少比较内存地址值,所以我们常常会根据自身需求重写 equals()方法。案例 4-13 多态的作用一、案例描述1、 考核知识点编 号:00104009名 称:多态2、 练习目标 了解多态的概念、多态的好处和弊端 掌握如何实现多态3、 需求分析在 Java 中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。多态提高代码了的扩展性和可维护性。为了帮助初学者掌握如何实现多态,本案例将实现一个多态程序来演示如何实现多态。4、 设计思路(实现原

39、理)1)编写 Animal 接口,接口中定义 sleep()方法。2)Cat 类实现 Animal 接口的方法,并定义另一个方法 catchMouse()3)编写测试类 Example13,使 Cat 对象指向父类 Animal 的引用 ,并通过该引用调用 sleep()方法。二、案例实现1、编写 Animal 接口及其实现类 Cat。代码如下:interface Animal void sleep();博学谷让 IT 教学更简单,让 IT 学习更有效19class Cat implements Animal void catchMouse() System.out.println(“抓老鼠“

40、);public void sleep() System.out.println(“睡觉“);2、定义测试类 Example13,Cat 对象指向 Animal 引用,并使用父类 Animal 引用调用 sleep()方法。代码如下:public class Example13 public static void main(String args) / 多态Animal animal = new Cat();animal.sleep();运行结果如图 4-13 所示。图 4-13 运行结果三、案例总结1、多态是指对象在不同时刻表现出来的不同状态,在 Java 中,允许使用一个父类类型的变量来

41、引用一个子类类型的对象。2、多态的前提:(1) 要有继承关系。(2) 要有方法重写。(3) 要有父类引用指向子类对象。3、多态的好处是提高代码的扩展性和可维护性。4、多态的弊端是父类或者接口只能调用自己具备的成员,不能访问子类特有的成员。案例 4-14 对象的类型转换一、案例描述1、 考核知识点编 号:00104010名 称:对象的类型转换博学谷让 IT 教学更简单,让 IT 学习更有效202、 练习目标 掌握如何实现对象的类型转换3、 需求分析在多态的学习中,涉及到将子类对象当做父类类型使用的情况,这时进行强制类型转换可能会出现出错。为了让初学者熟悉对象的类型转换,本案例将演示一个子类与父类

42、之间类型转换过程中出现的错误。 编写一个接口 Animal,接口中定义 sleep()方法,编写两个类 Cat 和 Pig 分别实现接口,再编写一个测试类 Example14 实现对象的类型转换。4、 设计思路(实现原理)1)编写 Animal 接口,接口中定义 sleep()方法。2)Cat 类和 Pig 类分别实现 Animal 接口的方法3)编写测试类 Example14 对对象的类型进行转换,使 Cat 向上转型为 Animal 类型,然后再让Animal 类型转换为 Pig 类型。二、案例实现1、编写 Animal 接口及其实现类 Cat。代码如下:interface Animal

43、void sleep();class Cat implements Animal public void sleep() System.out.println(“猫晚上睡觉“);class Pig implements Animal public void sleep() System.out.println(“猪整天睡觉“);2、定义测试类 Example14,Cat 对象指向 Animal 引用,并使用父类 Animal 引用调用 sleep()方法。代码如下:public class Example14 public static void main(String args) Anima

44、l animal = new Cat();Pig pig = (Pig) animal; pig.sleep();运行结果如图 4-14 所示。博学谷让 IT 教学更简单,让 IT 学习更有效21图 4-14 错误提示三、案例总结1、向下类型转换时,需要注意被转换对象的真实类型是否和需要转换的对象类型相同,否则容易报类型转换异常(java.lang.ClassCastException)。2、Java 提供了一个关键字 instanceof,它可以判断一个对象是否为某个类(或接口)的实例或者子类实例,语法格式如下:对象( 或者对象引用变量) instanceof 类(或接口)3、进行向上类型转

45、换,子类对象当做父类类型使用时,不能通过父类变量去调用子类中某些方法,否则会抛出编译异常。案例 4-15 匿名内部类一、案例描述1、 考核知识点编 号:00104011名 称:匿名内部类2、 练习目标 了解什么是匿名内部类 掌握如何使用匿名内部类3、 需求分析在学习接口时,如果方法的参数被定义为一个接口类型,那么就需要定义一个类来实现接口。除此之外,还可以使用匿名内部类来实现接口。为了让初学者能更好地理解什么是匿名内部类,本案例将演示如何实现一个匿名内部类。4、 设计思路(实现原理)1)设计一个 Inter 接口,接口中定义 show()和 method()方法。2)设计一个 Outer 类,

46、在类的 function()方法中使用匿名内部类实现 Inter 接口并实例化,并调用show()和 method()方法。3)最后编写一个测试类 Example15,创建 Outer 的对象并调用 function()方法。二、案例实现1、编写 Inter 接口及 Outer 类,使用匿名内部类实现接口并创建对象。代码如下:interface Inter 博学谷让 IT 教学更简单,让 IT 学习更有效22void show();void method();class Outer void function() Inter i = new Inter() public void show()

47、 System.out.println(“show“);public void method() System.out.println(“method“);i.show();i.method();2、定义测试类 Example15。代码如下:public class Example15 public static void main(String args) Outer o = new Outer();o.function();运行结果如图 4-15 所示。图 4-15 运行结果三、案例总结1、匿名内部类的格式,具体如下:new 父类(参数列表 ) 或 父接口()/匿名内部类实现部分2、匿名内

48、部类是实现接口的一种简便写法,在程序中不一定非要使用匿名内部类。3、什么时候使用匿名内部类:通常在使用方法是接口类型参数,并该接口中的方法不超过三个时,可以将匿名内部类作为参数传递。4、内部类:(1) 将一个类 B 定义在另一个类 A 的里面,那么 B 类就称为内部类 (嵌套类),内部类定义在成员位置上。(2) 内部类可以直接访问外部类中的成员,包括私有成员,而外部类要访问内部类中的成员必须要建博学谷让 IT 教学更简单,让 IT 学习更有效23立内部类的对象。案例 4-16 try.catch 语句一、案例描述1、 考核知识点编 号:00104012名 称:try.catch 和 finally2、 练习目标 掌握如何使用 try.catch 语句进行异常处理3、 需求分析Java 中提供了一种对异常进行处理的方式异常捕获,异常捕获通常使用 trycatch 语句。为了让初学者熟悉 trycatch 语句,本案例将演示如何使用 try.catch 语句处理遍历时可能出现的数组角标越界异常。4、 设计思路(实现原理)1) 编写测试类 Example16,2) 在类 Example16 中定义名为 arr 的 int 类型一维数组,遍历数组输出每次遍历出的值,结束输

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报