博学谷——让IT教学更简单,让IT学习更有效
三、案例总结
当一个类的方法被final关键字修饰后,这个类的子类将不能重写该方法。
案例4-8 final修饰局部变量 一、案例描述
1、 考核知识点 编号:00104004 名称:final关键字
2、 练习目标
? 掌握使用final关键字修饰局部变量
3、 需求分析
Java中被final修饰的变量为常量,它只能被赋值一次,也就是说final修饰的变量一旦被赋值,其值不能改变。为了让初学者掌握使用final关键字修饰局部变量,本案例将在类的方法中定义一个final修饰的局部变量,并试着对该变量重新赋值。
4、 设计思路(实现原理)
1)编写一个Example08类,类中定义类一个final修饰的局部变量age,为其赋初始值为18。 2)为age重新赋值为20。
二、案例实现
1、编写类Example08,代码如下
public class Example08{ }
public static void main(String[] args) { }
final int age = 18; // 第一次可以赋值 age = 20; // 再次赋值会报错
编译错误,如图4-8所示。
图4-8 错误提示
11
博学谷——让IT教学更简单,让IT学习更有效
三、案例总结
final修饰的变量表示常量,一经定义就不能重新赋值。
案例4-9 final修饰成员变量 一、案例描述
1、 考核知识点
编号:00104004 名称:final关键字
2、 练习目标
? 掌握使用final关键字修饰成员变量
3、 需求分析
在Java中,final修饰的变量表示常量,一经定义就不能重新赋值。为了让初学者熟悉final修饰变量的情况,本案例将使用final关键字修饰成员变量,观察其是否能够再次赋值。 4、 设计思路(实现原理)
1)编写一个Fu类,父类中定义一个变量X,并用final关键字修饰变量。 2)编写Zi类,Zi类继承于Fu类,在子类中对常量再赋新值。 3)定义测试类Example09,观察运行结果。
二、案例实现
1、编写Fu类及其子类Zi类,在Zi类中对X再赋值,代码如下:
class Fu { }
class Zi extends Fu { }
X = 20;//在子类中对常量再赋新值 public void method() { }
System.out.println(X); //final修饰的变量,也就是常量 public final int X = 10;
2、定义测试类Example09,代码如下:
public class Example09{
public static void main(String[] args) { }
12
Zi z = new Zi(); z.method();
博学谷——让IT教学更简单,让IT学习更有效
}
编译错误,结果如图4-9所示。
图4-9 错误提示
三、案例总结
在本案例中Zi类中对变量X再次赋值,运行结果报错。这是因为Java中被final修饰的变量为常量,它只能被赋值一次,也就是说final修饰的变量一旦被赋值,其值不能改变。如果再次对该变量进行赋值,则程序会在编译时报错。
案例4-10 接口的实现 一、案例描述
1、 考核知识点
编 号:00104006 名 称:接口 2、 练习目标
? 掌握如何实现接口
3、 需求分析
由于接口中的方法都是抽象方法,因此不能通过实例化对象的方式来调用接口中的方法。此时需要定义一个类,并使用implements关键字实现接口中所有的方法。为了上初学者掌握如何实现接口,本案例将设计一个类,使用关键字implements实现Inter接口中的方法。
4、 设计思路(实现原理)
1)设计名为Inter的接口,接口中定义一个初始值为20的num常量和method()抽象方法。 2)编写Inter接口的实现类InterImpl,使用implements关键字实现接口中的方法。
3)编写测试类Example10,测试类中对接口的实现类进行实例化,并调用接口中的方法。
二、案例实现
1、编写接口Inter,InterImpl类使用implements实现了接口,代码如下:
//定义一个接口 interface Inter { }
13
int num = 20; void method();
博学谷——让IT教学更简单,让IT学习更有效
// 使用implements关键字实现接口 class InterImpl implements Inter { }
void show() { }
public void method() { }
System.out.println(\System.out.println(num);
2、定义测试类Example10,代码如下:
class Example10{ }
public static void main(String[] args) { }
//通过实现类实例化
InterImpl ii = new InterImpl(); ii.show(); ii.method();
运行结果如图4-10所示。
图4-10 运行结果
三、案例总结
1、接口使用interface关键字来定义。
2、接口没有构造方法,接口中的变量缺省都是使用public static final修饰的,即全局常量,接口中的方法都是public abstract修饰的,即抽象方法。
3、定义一个类,并使用implements关键字实现接口中的方法,一个类可以实现多个接口。
4、由于接口中的方法都是抽象方法,因此不能直接通过实例化对象的方式来调用接口中的方法,需要在类实现接口后借助类来间接实例化。
案例4-11 接口的继承 一、案例描述
1、 考核知识点
编 号:00104007
名 称:接口的继承与多实现
14
博学谷——让IT教学更简单,让IT学习更有效
2、 练习目标
? 掌握接口继承的方式及其特点
3、 需求分析 在程序中,可以定义一个接口使用extends关键字去继承另一个接口。为了加深初学者对结果的理解,本案例将演示接口与接口、类与接口的继承和实现关系。
4、 设计思路(实现原理)
1)设计接口Phone代表传统手机,在接口中定义receiveMessages()和call()抽象方法。
2)设计接口SmartPhone代表智能手机,在接口中定义faceTime()方法,并使用extends关键字继承Phone接口,使其具有Phone接口的所有功能。 3)设计类MIPhone表示小米手机,类中定义useMIUI()方法,并实现SmartPhone接口的所有方法。 4)编写测试类Example11,测试类中对MIPhone进行实例化,并访问小米手机具有的各种功能。
二、案例实现
1、编写接口Phone和SmartPhone、类MIPhone。代码如下:
interface Phone { }
interface SmartPhone extends Phone { }
class MIPhone implements SmartPhone { }
public void receiveMessages() { }
public void call() { }
public void faceTime() { }
public void useMIUI() { }
System.out.println(\使用MIUI\System.out.println(\视频通话\System.out.println(\语音通话\System.out.println(\接收短息\void faceTime();
void receiveMessages(); void call();
2、定义测试类Example11,代码如下:
public class Example11 {
public static void main(String[] args) {
MIPhone miPhone = new MIPhone(); miPhone.receiveMessages(); miPhone.call(); miPhone.faceTime();
15