首页 > 代码库 > 接口基本定义及应用

接口基本定义及应用

                                                                                                       接口

1、 接口的定义:

接口严格来讲是一个只有全局常量和抽象方法的特殊的类,接口的主要功能是解决但继承局限问题。

     

    1.1使用interface关键字定义接口:

              Interface A{

              Public static final String MSG=”Hello”  ………//全局常量

              Public abstract void print();………        //抽象方法

1.2由于接口里存在抽象方法,所以接口对象不可以直接使用关键字new进行实例化,所以接口有如下几点使用原则:

1) 接口必须要有子类,但一个子类可以使用implements关键字实现多个接口

  Class A implements C,B{ }

2) 接口的子类如果不是抽象类,必须要覆写接口的全部抽象方法

3) 接口的对象可以利用子类对象的向上转型进行实例化操作

例:interface A{}

      interface B{ }

class x implements A,B{}

X x=new x();   //实例化子类对象

A a=x;        //向上转型

B b=x        //向上转型

 

1.3当一个类既要继承一个类又要实现一个接口时要先extends再implements.

 

1.4以下;两种接口的定义方法是完全一样的:

Interface A{                                      Interface A{

       Public  static final String MSG=”Hello”;                String MSG=”Hello”;

Public abstract void fun();}                            void fun();}

在接口里面没有写public,其最终的访问权限也是public,而不是default。

 

1.5接口可以用extends继承类:

Interface B extends A,C{}

但子类要覆写A,B,C所有抽象方法

 

1.6在接口里可以定义普通内部类,抽象内部类,内部接口。在一个接口的内部如果使用static定义一个内部接口表示定义了一个外部接口。

 

2、 接口的实际应用——标准

应用实例:

   Interface USB{//定义USB标准

Public void start();

              Public voidstop();

Class computer{//定义电脑

     Public void plugin(USB usb){//插入

              Usb.start();

              Usb.stop();

              }

 

Class flash implements USB{// 定义U盘

    Public void start(){

              System.out.println(“U盘开始使用”);

}

    Public void stop(){

        System.out.println(“U盘结束使用”);

 

   Public static testDemo{

              Public static void main(String[] args){

                     Computer com=new computer();

                     Com.plugin(new Flash);

}

}

 

 

3、 接口的应用——工厂设计模式

应用实例:

package testDemo;

interface Fruit{//fruil接口

    public void eat();

}

 

class Apple implements Fruit{//苹果

        public void eat(){

            System.out.println("***吃苹果");

        }}

class Orange implements Fruit{//橘子

        public void eat(){

            System.out.println("***吃橘子");

        }}

 

 

class Factory{//工厂类

    public static Fruit getInstance(String className){

        if("apple".equals(className))

            return new Apple();

        else

            return new Orange();

        }}

 

public class testDemo{

    public static void main(String[] args){

        Fruit f=Factory.getInstance("Apple");

        f.eat();

}}

 

4、接口的应用——代理设计模式

package testDemo;

 

interface Subject{//整个操作的核心主题

    public void make();//核心功能

}

 

class RealSubject implements Subject{

    public void make(){

        System.out.println("正在执行");

}

}

 

class ProxySubject implements Subject{

    private Subject subject;

    public ProxySubject(Subject subject){

        this.subject=subject;

    }

   

    public void prepare(){

        System.out.println("执行前");

    }

   

    public void make(){

        this.prepare();

        this.subject.make();

        this.finish();

    }

 

    public void finish(){

    System.out.println("执行后");

}

}

 

public class testDemo{

    public static void main(String[] args){

        Subject sub=new ProxySubject(new RealSubject());

        sub.make();//调用的是代理主题操作

}}

 

真实主题类只完成核心任务,而代理主题类完成所有与核心业务有关的辅助操作

 

4、 抽象类与接口的区别

No

区别

抽象类

接口

1

关键字

Abstract class

Interface

2

组成

构造方法、普通方法、抽象方法、static方法、常量、变量

全局常量、抽象方法

3

子类使用

Class 子类、extends抽象类

Class子类 implements 接口..

4

关系

抽象类可以实现多个接口

接口不能继承抽象类,可以继承多个父接口

5

权限

可以使用各种权限

只能使用public权限

6

限制

单继承局限

没有单继承局限

 

 

接口基本定义及应用