java接口

206 阅读2分钟

java接口

注意事项:

接口不能被实例化。

接口所有的方法试public 方法 接口中抽象方法,可以不用关键字 abstract修饰。11111

void aaa();
​
实际上是abstract void aaa();

一个普通类实现接口,就必须将该接口的所有方法都实现 ,否则编译器报错。

抽象类实现接口,可以不用实现接口方法。

一个类可以同时实现多个接口。

class Pig implements IB,IC { 
​
@Override 
​
public void hi() { 
​
}
​
@Override 
​
public void say() { 
​
} 
​
}

接口中的属性只能是final的, 而且是public static final 修饰符,比如:

Int a=1;
​
等同于public static final int a=1;(必须初始化)

接口中的属性访问形式:接口名.属性名

接口不能继承其他的类,但是可以继承多个别的接口;

interface A extends B,C{}

接口的修饰符只能是public和默认 这点与类的修饰符是一样的。

接口与继承的区别:

当子类继承了父类,就自动的拥有父类的功能

如果子类需要扩展功能,可以通过实现接口的方式扩展.

可以理解 实现接口 是 对 java 单继承机制的一种补充。

接口和继承解决的问题不同:

继承的价值主要在于:解决代码的复用性和可维护性。 接口的价值主要在于:设计 设计好各种规范方法 让其他类去实现这些方法,更加的灵活。

接口比继承更加灵活,在一定程度上实现代码的解耦【接口规范性和动态绑定机制】

接口的多态体现

package _interface;

public class InterfacePolyParameter {

    public static void main(String[] args) {
        //接口的多态实现
        // 接口类型的变量if01  可以指向 实现了IF接口对象的实例
        IF if01 = new Car();
        if01 = new Key();


//        继承体现的多态
//父类类型的变量a 可以指向 继承了AAA的子类的对象实例
        AAA a = new BBB();
        a=new CCC();
    }
}

interface IF {

}

class Car implements IF {

}

class Key implements IF {

}


class AAA {

}


class BBB extends AAA {

}

class CCC extends AAA {

}
package _interface;


public class InterfaceArr {


    public static void main(String[] args) {

        Usb[] usbs=new Usb[2];
        Phone_ phone = new Phone_();
        Camera_ camera = new Camera_();
        usbs[0]=phone;
        usbs[1]=camera;

        for (int i = 0; i < usbs.length; i++) {

            usbs[i].work();
            //我们需要对类型进行向下转型 instanceof  判断的是运行类型

            if(usbs[i] instanceof Phone_){//instanceof   判断的是运行类型
                ((Phone_) usbs[i]).call();
            }


        }



    }
}

interface Usb{

    void work();

}

class Phone_ implements Usb{

    public void  call(){
        System.out.println( "打电话");
    }

    @Override
    public void work() {
        System.out.println("手机工作");

    }
}

class Camera_ implements Usb{

    @Override
    public void work() {
        System.out.println( "相机工作");
    }
}

接口多态传递

package _interface;

/**
 * 演示多态传递现象
 */
public class InterfacePolyPass {
    public static void main(String[] args) {

        //接口类型的变量指向  实现了该接口的类的对象实例
        IG ig = new Tercher();

        //如果IG 继承了IH接口  而Teacher 类实现了IG接口
        //那么  实际相当于Teacher 类实现了IH接口

        //这就是所谓的接口多态传递现象

        IH ih = new Tercher();

    }
}


interface IH {

}

interface IG extends IH {

}

class Tercher implements IG {

}