博学谷——让IT教学更简单,让IT学习更有效
案例4-4 super访问父类成员方法 一、案例描述
1、 考核知识点 编号:00104003 名称:super关键字
2、 练习目标
? 掌握使用super关键字访问父类成员方法
3、 需求分析
子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这个问题,在Java中专门提供了一个super关键字用于访问父类的成员。为了让初学者熟悉super关键字的用法,本案例将分别设计Fu类及其子类Zi,在Zi类的方法中使用super关键字访问Fu类的成员方法。
4、 设计思路(实现原理)
1)编写一个Fu类,在类中定义无参构造和一个无返回值的show()方法。
2)Zi类继承Fu类,子类中定义无参构造和一个无返回值的method()方法,method()方法中使用super关键字调用了Fu类的show()方法。 3)定义测试类Example04。
二、案例实现
1、编写Fu类及其子类Zi,在Zi类中使用super关键字调用Fu类成员方法,代码如下:
class Fu { }
class Zi extends Fu { }
Zi() {}
void method() { }
System.out.println(\// super关键字调用父类成员方法 super.show(); Fu() {} void show() { }
System.out.println(\
2、定义测试类Example04,代码如下:
class Example04{
public static void main(String[] args) { }
6
Zi z = new Zi(); z.method();
博学谷——让IT教学更简单,让IT学习更有效
}
运行结果如图4-4所示。
图4-4 运行结果
三、案例总结
1、使用super关键字调用父类的成员方法。具体格式如下:
super.成员方法([参数1,参数2…])
2、被调用的父类成员方法,必须是非private的。
案例4-5 super访问父类构造方法 一、案例描述
1、 考核知识点
编号:00104003 名称:super关键字
2、 练习目标
? 掌握如何在子类构造方法中使用super关键字访问父类构造方法
3、 需求分析
在子类的构造方法中一定会调用父类的某个构造方法,如果想指定调用类父类中的哪个构造方法,可以使用super关键字来实现。为了让初学者掌握super关键字的用法,本案例将分别设计Fu类及其子类Zi,在Zi类的构造方法中使用super关键字访问Fu类的构造方法。
4、 设计思路(实现原理)
1)编写一个Fu类,在类中定义无参构造。
2)Zi类继承Fu类,子类中也定义无参构造方法,在构造方法中使用super关键字调用Fu类的构造方法。
3)定义测试类Example05。
二、案例实现
1、编写Fu类及其子类Zi,在Zi类构造中使用super关键字调用Fu类构造方法,代码如下:
class Fu {
Fu() {
System.out.println(\类构造方法!\}
7
博学谷——让IT教学更简单,让IT学习更有效
}
class Zi extends Fu { }
Zi() {
super();//在子类构造中调用父类构造 System.out.println(\类构造方法!\}
2、定义测试类Example05,代码如下:
public class Example05{ }
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关键字修饰类的特点 ? 掌握final关键字修饰类的用法
3、 需求分析
Java中的类被final关键字修饰后,该类将不可以被继承,也就是不能够派生子类。为了让初学者熟悉final关键字修饰类的用法,本案例将分别设计两个类,一个是使用final关键字修饰的Fu类,另一个是继承Fu类的Zi类,验证final关键字修饰的类是否能被继承。
8
博学谷——让IT教学更简单,让IT学习更有效
4、 设计思路(实现原理)
1)编写一个final关键字修饰的Fu类,类体可以为空 2)编写Zi类,Zi类继承于Fu类,类体可以为空 3)定义测试类Example06。
二、案例实现
1、编写final修饰的Fu类,Zi类继承Fu类,代码如下:
final class Fu { }
//Zi类继承final修饰的Fu类 class Zi extends Fu { }
// 类体为空代码 // 类体为空代码
2、定义测试类Example06,代码如下:
public class Example06{ }
public static void main(String[] args) { }
Zi zi = new Zi();
运行结果如图4-6所示。
图4-6 运行结果
三、案例总结
在Java中,被final关键字修饰的类为最终类,不能被其它类继承。
案例4-7 final修饰方法 一、案例描述
1、 考核知识点 编号:00104004 名称:final关键字 2、 练习目标
9
博学谷——让IT教学更简单,让IT学习更有效
? 掌握使用final关键字修饰方法
3、 需求分析
子类可以继承父类的成员方法,并在必要时对方法进行重写,增加了方法的扩展的同时也打破了方法的封装,如果我们希望父类中的某些方法不能被重写,这时就可以使用final关键字来修饰。为了让初学者掌握使用final关键字修饰方法,本案例将分别设计两个类,一个是Fu类,其中定义了final修饰的show()方法,另一个是继承Fu类的Zi类,在Zi类中对show()方法进行重写。 4、 设计思路(实现原理)
1)编写一个Fu类,类中定义final修饰的show()方法。
2)编写Zi类,Zi类继承于Fu类,在Zi类中对show()方法进行重写 3)定义测试类Example07,创建Zi类对象,并调用Zi类show()方法。
二、案例实现
1、编写Fu类及其子类Zi类,在Zi类中对show()方法重写,代码如下:
class Fu { }
class Zi extends Fu { }
//重写父类中final修饰的方法 public void show() { }
System.out.println(\这是一堆垃圾,给处理了\//final关键字修饰的方法 public final void show() { }
System.out.println(\这是绝密资源\
2、定义测试类Example07,代码如下:
public class Example07{ }
public static void main(String[] args) { }
Zi z = new Zi(); z.show();
运行结果如图4-7所示。
图4-7 运行结果
10