Java基础巩固系列 接口(interface)

接口interface): 是与类并行的一个概念

Note:

1. 接口可以看做是一个特殊的抽象类。是常量与抽象方法的一个集合包含变量一般的方法
2. 接口是没有构造器的。
3. 接口定义的就是一种功能。此功能可以被类所实现implements)。 比如:class CC extends DD implements AA

4. 实现接口的类,必须要重写其中的所有抽象方法方可实例化,若没有重写所有抽象方法,则这此类一个抽象类
5. 类可以实现多个接口。-------java中继承是单继承的。

6.接口与接口之间也是继承关系,而且可以实现多继承
    ps: 5,6描述的是java中的继承的特点
7. 接口具体的实现类之间也存在多态性

代码示例1:

public class TestInterface {
    public static void main(String[] args) {
        System.out.println(AA.I);
//        AA.I = 13;
    }
}

interface AA {
    //常量:所有的常量都用public static final修饰,如果不写则会默认修饰
    int I = 12;
    boolean FLAG = false;
//    int i;

    //抽象方法:所有的抽象方法都用public abstract修饰
    void method1();

    void method2();

    public abstract void method3();
}

abstract class BB implements AA {

}

class DD {

}

interface MM {
    void method4();
}

class CC extends DD implements AA, MM {

    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }

    @Override
    public void method4() {

    }
}

//接口之间仍为继承关系!(多继承)
interface JJ extends MM,AA {
    void method5();
}

class GG implements JJ {

    @Override
    public void method4() {

    }

    @Override
    public void method5() {

    }

    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }
}

代码示例2:

//接口与具体的实现类之间也存在多态性
public class TestInterface1 {
    public static void main(String[] args) {
        Duck d = new Duck();
        TestInterface1.test1(d);
        TestInterface1.test2(d);
        TestInterface1.test3(d);
        Runner r = new Duck();
        r.run();
    }

    public static void test1(Runner r){ //Runner r = new Duck();
        r.run(); //虚拟方法调用
    }

    public static void test2(Swimmer s){ //Swimmer s = new Duck();
        s.swim();
    }
    public static void test3(Flier f){ //Flier f = new Duck();
        f.fly();
    }
}

interface Runner {
    public abstract void run();
}

interface Swimmer {
    void swim();
}

interface Flier {
    void fly();
}

class Duck implements Runner,Swimmer,Flier{

    @Override
    public void run() {
        System.out.println("鸭子屁股扭扭地走路");
    }

    @Override
    public void swim() {
        System.out.println("红掌拨清波");
    }

    @Override
    public void fly() {
        System.out.println("丑小鸭也可以变成白天鹅");
    }
}

结果:

鸭子屁股扭扭地走路
红掌拨清波
丑小鸭也可以变成白天鹅
鸭子屁股扭扭地走路

总结

1. 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。

2. 通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能

3. 接口主要用来定义规范。解除耦合关系。

猜你喜欢

转载自blog.csdn.net/Peter__Li/article/details/88949031
今日推荐