从零开始学java(接口)

接口

  前面讲到了类的继承与多态,其实接口也很类似与类的继承与多态,不同于类,接口是可以多个实现的,如果把类与类继承比喻为父与子,那么接口就是实现类的一种能力。比如,一个人具有吃饭的能力,我们写一吃饭的接口,这个接口只要是人这个类派生出的子类都可以去实现它。所以一个子类只能继承一个父类,但是一个类可以实现多个接口。来看代码。

/**
 * 定义一个Eat接口 
 * @author GMZ
 * 定义接口的关键字为 interface
 */
public interface Eat {
    
    public void eat();
}
/**
 * 定义一个Run接口 
 * @author GMZ
 * 定义接口的关键字为 interface
 */
public interface Run {
    
    public void run();
}
public abstract class Parent implements Eat,Run {
    protected String name;

    public Parent(String name) {
        this.name = name;
    }
}
/**
 * 写一个实现类 继承Parent
 * @author GMZ
 * 因为Parent类implements接口所以,实现类必须实现接口的方法
 */
public class Lily extends Parent {
    
    public Lily(String name) {
        super(name);
    }

    @Override
    public void eat() {
        System.out.println(super.name+"-----------在吃饭!");
    }

    @Override
    public void run() {
        System.out.println(super.name+"-----------在疯跑!");
    }

}
/**
 * 写一个做事的代理类
 * @author GMZ
 *
 */
public class DoProxy {

    public static void run(Parent parent){
        parent.run();
    }
    
    public static void eat(Parent parent){
        parent.eat();
    }
}
public static void main(String[] args) {
        
        DoProxy.run(new Lily("lily"));
        DoProxy.eat(new Lily("lily"));
    }

接口有几个特点:

  1.接口不可以被实例化

  2.实现类必须实现接口的所有方法,否则必须将其定义为抽象类(如上图代码)。

  3.实现类可以实现多个接口

  4.接口中的变量都是静态常量

  5.接口中的方法都是全局抽象方法,接口中没有构造方法

接口的总结:

  接口表示一种约定,接口表示一种能力,接口体现了约定和实现相分离的原则。

  抽象类利于代码的复用,接口利于代码的维护

  通过面向接口编程:可以降低代码之间的耦合(类的继承是一种强耦合),提高代码的可扩展性和维护性

原文地址:https://www.cnblogs.com/Cgosling/p/9943804.html