发布时间 : 星期四 文章第4章面向对象(下) - 补充案例课件更新完毕开始阅读
博学谷——让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
博学谷——让IT教学更简单,让IT学习更有效
}
}
miPhone.useMIUI();
运行结果如图4-11所示。
图4-11 运行结果
三、案例总结
接口与接口之间的继承关系,可以是单继承,也可以是多继承;一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔开。
案例4-12 Object类 一、案例描述
1、 考核知识点
编 号:00104008 名 称:Object类
2、 练习目标
? 了解什么是Object类
? 掌握Object类中常用方法的使用
3、 需求分析
在JDK中提供了一个Object类,它是所有类的父类,即每个类都直接或间接继承自该类。Object类自身的equals()方法比较的是内存地址值,相当于“==”,但是在实际开发中我们很少比较两个对象的地址值,这时候常常就需要根据自身需求来重写equals()方法。为了方便初学者学习Object类,本案例将演示如何重写equals()方法。
4、 设计思路(实现原理)
1)设计Student类,定义sid变量表示学号,重写equals()方法,判断进行比较的两个学生对象学号是否相同,相同即为同一个学生,否则不是。
2)编写测试类Example12,创建两个Student的对象Lily和Lucy,并分别调用setter方法为学号赋值,最后通过打印语句,输出这两个对象通过“==”和重写后的equals()方法比较后的结果。
二、案例实现
1、编写Student类,重写equals()方法。代码如下:
class Student {
Student() {}
16