第六章 接口与实现
教学内容总结
接口
为了克服Java单继承的缺点,使用接口,一个类可以实现多个接口
1.接口声明
2.接口体
包含常量的声明和抽象方法
常量的访问权限public, 是static常量(可省略public final static修饰符)
抽象方法的访问权限public(可省略public abstract修饰)
接口中的方法不能被static和final修饰,因为要重写所有接口的方法
接口中没有构造函数,方法可以抛出异常
实现接口
关键字implement
若一个类实现了某个接口,则这个类必须重写该接口的所有方法
接口可通过extends关键字来继承产生新的接口
import java.io.*; 可引入包中的类和接口
接口的UML图 课本P148
第一层:名字层 第二层:常量层 (常量名字:类型) 第三层:方法层/操作层
(虚线的起始端是类、终点端使用空心三角形)
理解接口
抽象类接口1.可作为行为准则 2.抽象类用于同一类别对象 3.接口跟注重行为的一致性
接口回调(与第五章的对象的上转型对象调用子类重写方法区分)
接口属于引用型变量
接口回调是指:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,则该接口变量可调用被类实现的接口方法
例子:
public interface ShowMessage {
void 显示商标(String s);
}
public class TV implements ShowMessage{
public void 显示商标(String s) {
System.out.println(s);
}
}
public class PC implements ShowMessage{
public void 显示商标(String s) {
System.out.println(s);
}
}
public class Example6_2 {
public static void main(String args[]) {
ShowMessage sm;//声明接口变量
sm=new TV();//接口变量存放对象的引用
sm.显示商标("电视机");//接口回调
sm=new PC();
sm.显示商标("MacBook");
}
}
接口与多态
由接口产生的多态是指不同的类在实现同一个接口时能具有不同的实现方式,则接口在回调接口方法时可能具有多种形态
接口变量做参数 example6_5
若一个方法的参数是接口类型,则可以将任何实现该接口的类的引用传递给该接口参数,则该接口参数可回调类实现的接口方法
例子:
interface SpeakHello{
void speakHello();
}
class Chinese implements SpeakHello{
public void speakHello() {
System.out.println("中国人习惯问候语:你好,吃饭了吗?");
}
}
class English implements SpeakHello{
public void speakHello() {
System.out.println("英国人习惯问候语:你好,天气不错 ");
}
}
class KindHello{
public void lookHello(SpeakHello hello) { //接口类型参数
hello.speakHello();//接口回调
}
}
public class Example6_5 {
public static void main(String args[]) {
KindHello kindhello=new KindHello();
kindhello.lookHello(new Chinese());
kindhello.lookHello(new English());
}
}
面向接口编程
1. 面向接口去设计程序,可以通过在接口中声明若干个abstract方法,表明这些方法的重要性,方法体的内容细节由实现接口的类去完成。
2. 使用接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用,从而接口变量就可以回调类实现的接口方法。
学习进度
这一个多月来因为其他事而没有更博,节奏被我打乱了。从这篇博客起将以章节为单位来更博。。。