从向上向下转型到----抽象类接口(二)

接口
接口:如果一个类只是由抽象方法和全局常量组成,这种情况不会定义为一个抽象类,而是将其定义为接口.同时接口打破了抽象类子类的一个很大的问题---单继承局限.在java中,可以使用interface来定义.如:

interface A{
public static final String MSG="YOOTK";
public abstract void print();
}

接口也必须有子类,一个子类可以使用implement关键字实现多个接口,避免单继承的局限.接口的子类,必须复写接口中的全部抽象方法.接口的对象可以利用子类对象的向上转型进行实例化操作.

 

接口的实际应用-----标准

什么是标准呢?举个例子,一个计算机定义了USB接口标准,那么使用这个USB的诸如U盘,MP3等很多设备才能根据这个接口去设计.

interface USB{
public void start(); //定义一个USB接口,有开始和停止两个功能
public void stop();
}
class Computer{
public void plugin(USB usb){ //定义一个计算机类调用这两个方法
usb.start;
usb.stop;
}
}
class Flash implements USB{
public void start(){
System.out.print(){
System.out.println("U盘开始使用")
}
....
}
}
class Print implements USB{
public void start(){
System.out.print(){
System.out.println("打印机开始使用")
} 
....
}
}
public class Demo{
public static void main(String args[]){
Computer com = new Computer; //实例化计算机
com.plugin(new Flash());    //插入USB接口
com.plugin(new Print());    //插入USB接口
}
}

 

接口的应用----工厂设计模式
让客户端只看见接口而不让看见子类,但需要一个中间的工具类来取得接口对象.而我们可以通过工厂类取得接口对象

class Factory{
public static Fruit getInstance(String className){
if("apple".equals(className)){
return new Apple();
}else if("orange".equals(className)){
return new Orange();
}else{
return null;
}
}
}

public class Demo{
public static void main(String args[]){
Fruit f = Factory.getInstance("orange");
f.eat;
}
}

 

接口的好处显而易见,避免了单继承的局限

posted @ 2018-04-06 11:31  海中灯塔  阅读(413)  评论(0编辑  收藏  举报