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

Posted 海中灯塔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从向上向下转型到----抽象类接口相关的知识,希望对你有一定的参考价值。

接口
接口:如果一个类只是由抽象方法和全局常量组成,这种情况不会定义为一个抽象类,而是将其定义为接口.同时接口打破了抽象类子类的一个很大的问题---单继承局限.在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;
}
}

 

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

以上是关于从向上向下转型到----抽象类接口的主要内容,如果未能解决你的问题,请参考以下文章

Java之路 - 抽象类接口多态向上向下转型

Java挠头继承抽象接口多态向上转型向下转型等精妙干货

java 多态

从零开始的Java开发1-4-3 多态:概念实现向上转型向下转型instanceof类型转换抽象类抽象方法

java向上转型和向下转型

Java向上转型和向下转型