接口与接口设计模式


 接口是什么

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
我的理解:它是一种特殊的类,特殊在它里面全是由全局常量和公共抽象方法组成,接口它是解决Java语言无法多继承的一种方法,但它更多的则是用来制定标准。(何为标准,标准就是类需要实现我这个接口,那就必须先实现我里面设置的某些方法)

接口是存抽象类

  所有成员函数都是抽象函数

  所有的成员变量都是public static final  

为什么要用接口

  1. 接口被用来描述一种抽象。
  2. 接口可以解决Java当中的多继承。

接口与抽象类区别  

抽象类中可以中可以有方法体,也就是能实现方法的具体功能,但是接口却不行,接口中只能定义方法,却不能实现它。
抽象类中可以有各种类型的成员变量,但是接口中的成员类型只能是public,static,final类型的。
一个类只能继承一个抽象类,但是一个类却可以实现多个接口。(实现Java中的多继承)
接口的声明:

interface 接口名称
{
    声明变量;
    抽象方法;
}

例:

接口与接口设计模式

 

 

 小结

为了声明接口,我们需要使用interface这个关键字。
接口中的属性类型默认为public,final,static。
接口中的所有方法都在需要去定义,而不需要去实现。(这和抽象类中的方法定义差不多)
一个类要实现这个接口,就必须这个接口中的所有方法体
(例如:节能是一个接口,那变频是一个方法体,如果想要去实现节能,那我们就必须先实现变频。)
重点

我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的。想要实例接口,我们可以使用接口类型的引用指向实现了该接口的对象,从而调用接口中的方法,但实际上是调用了实现该接口的类的方法。(实际上就是Java多态中的特性)
一个类可以实现多个不同的接口。(Java实现多继承)
接口之间可以像类一样实现继承,还可以实现多继承。
一个类如果要实现一个接口,那必须要先实现这个接口中的所有方法。

接口模式的介绍

接口通常代表的是一种承诺,即方法需要实现接口方法名表示的操作,Java将接口概念提升为独立的结构,体现了接口与实现的分离。

接口型模式包括:适配器模式、外观模式、合成模式、桥接模式。

 

接口实例

UML图

实现接口

类用extends,接口用interface

类可以实现很多接口

接口可以继承接口,但不能继承类

接口不能实现接口

面向接口的编程方式

设计程序时先定义接口,在实现类

任何需要在函数间传入传出的一定是接口而不是的类

是Java成功的关键之一,因为适合多人同时写一个大程序

也是Java被批评的要点之一,因为代码量膨胀起来也很快

Animal类

package demo02.clock.jiekou;
 
/**
 * Created by lulei on 2019/4/9.
 */
public interface Animal {
    void eat();
    void speak();
}

Cat类

package demo02.clock.jiekou;
 

/**
 * Created by lulei on 2019/4/9.
 */
public class Cat implements Animal {
    public void eat() {
        System.out.println("爱吃鱼!");
    }
 
    public void speak() {
        System.out.println("喵!喵!喵!");
    }
}

Dog类

package demo02.clock.jiekou;
 

/**
 * Created by lulei on 2019/4/9.
 */
public class Dog implements Animal {
    public void eat() {
        System.out.println("爱吃骨头!");
    }
 
    public void speak() {
        System.out.println("汪!汪!汪!");
    }
}

Test类

package demo02.clock.jiekou;
 

 
/**
 * Created by lulei on 2019/4/9.
 */
public class Test {
    public static void main(String[] args) {
        Animal cat = new Cat();
        Animal dog = new Dog();
        System.out.println("-------cat-------");
        cat.eat();
        cat.speak();
        System.out.println("-------dog-------");
        dog.eat();
        dog.speak();
    }
}

 

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/270241.html

(0)
上一篇 2022年6月24日 11:39
下一篇 2022年6月24日 11:39

相关推荐

发表回复

登录后才能评论