interface关键字和implements关键字以及接口

  • Post author:
  • Post category:其他





目录




1.接口的作用​


2.interface关键字​


3.implements关键字​


4.类和接口的关系: 咱们可以理解为 子类和父接口。​


5.接口的特点​


6.接口成员特点​


7.抽象类和接口的区别​




1.接口的作用





  • 接口就是为了定义一些,扩展功能,这些功能并不是某个事物,天生所具备的,所以这些功能,就不适合直接定义到某个事物中,而是定义到接口中.在接口中定义这些功能时也不需要给出具体实现,直接抽象出来.如果某些事物,想要具备这些扩展功能,就可以实现该接口。



  • 接口其实还可以定义一些规范,规则,然后然子类根据自身的差异性去实现这个规范。



2.interface关键字





定义接口使用 interface 这个关键字来定义.          格式:     interface 接口名 {}



3.implements关键字





类要实现某个接口使用 implements 这个关键字来实现.     格式:    class 类名 implements 接口名 {}



4.类和接口的关系: 咱们可以理解为 子类和父接口。





5.接口的特点





  • 接口不能直接实例化。(但是咱们还是可以采用多态的方式来进行实例化。)



  • 接口中没有构造方法。



  • 接口中的方法,全是抽象方法.前面存在默认修饰符 public abstract,没有非抽象方法.在JDK1.8之后,接口中可以定义静态方法和default修饰的方法。(接口中default修饰的方法,实现类,可以继承下来,而且也可以重写。接口中的静态方法,只能使用接口名直接调用,实现类是无法继承的,也无法调用。)



  • 接口中没有成员变量,全部是公共的静态常量 ,前面还是存在默认修饰符 public static final.(接口中的公共的静态常量,实现类,可以继承使用。)



  • 接口属于引用数据类型



  • 接口支持多继承,一个接口可以继承多个接口



  • 当一个非抽象类实现接口,必须将接口中的所有方法全部实现(覆盖/重写).并且一个类可以同时实现多个接口.



补:接口与接口之间在进行向下转型的时候,并不需要继承关系.但需要注意,运行时可能会出现ClassCastException(类类型转换异常).



接口的语法:   [修饰符列表]  interface  接口名{      }       (此处没有class关键字)

//测试类
public class interfaceTest1  {
    public static void main(String[] args) {

        //父接口        子类对象        (多态的方式实例化)
        MyInterface m = new BB();
        m.haha();       //哈哈
        m.hehe();       //呵呵
        m.bb();         //接口中的default修饰的方法

        //使用接口名,直接调用接口中的公共的静态常量和静态方法(静态属于类,接口)
        //输出接口中的静态常量
        System.out.println(MyInterface.A);       //2000    
        System.out.println(MyInterface.NUM);     //100
        //输出接口中的静态方法
        MyInterface.aa();                        //接口中的一个静态方法

        //也可以使用 子类名 调用父接口的公共的静态常量
        //输出子类中的静态常量,子类中没有就会去父接口中找
        System.out.println(BB.A);                //9000
        System.out.println(BB.NUM);              //100
        //向下转型,调用接口中的default修饰的方法
        BB bb = (BB) m;
        bb.bb();
    }
}


//接口类
interface MyInterface {

    //前面还是存在默认修饰符 public static final,此处已省略
    int NUM = 100;

    //公共的静态常量,你可以写出来
    public static final int A = 2000;

    //前面存在默认修饰符 public abstract,此处已省略
    void hehe();

    //也可以不省略
    public abstract void haha();

    //JDK1.8 之后允许在接口中定义静态方法
    public static void aa() {
        System.out.println("接口中的一个静态方法");
    }

    //还可以允许在接口中定义 default 修饰的方法。default 修饰的方法直接用对象名调用
    public default void bb() {
        System.out.println("接口中的default方法");
    }
}


//BB类
class BB implements MyInterface {
    public static final int A = 9000;

    //重写的接口内的方法
    @Override
    public void hehe() {
        System.out.println("呵呵");
    }

    @Override
    public void haha() {
        System.out.println("哈哈");
    }

}



6.接口成员特点





  • 成员变量: 只能是常量,并且是静态的。        默认修饰符:public static final



  • 成员方法: 只能是抽象方法。        默认修饰符:public abstract



  • 构造方法: 接口没有构造方法。



7.抽象类和接口的区别





  • 抽象类有构造方法.        接口中没有构造方法这一说



  • 抽象类可以定义抽象方法,也可以定义非抽象方法.        接口全是抽象方法,没有非抽象方法.JDK1.8之后,接口中可以定义静态方法和default修饰的方法。



  • 抽象类可以定义成员变量,也可以定义常量.        接口中只能定义公共的静态常量.



  • 抽象类体现的思想还是 is a  的思想  燕子,麻雀 是鸟类的一种.        接口体现的是事物的扩展功能,事物本身所不具备的功能,可以定义到接口中.某些事物想要具备扩展功能就可以实现该接口。



  • 类与类之间只能单继承.           接口与接口之间可以多继承.



了解抽象类点击这里









了解抽象类点击这里









了解抽象类点击这里









了解抽象类点击这里









了解抽象类点击这里









了解抽象类点击这里









了解抽象类点击这里













(小编也在努力学习更多哟!以后会多多分享哒!)







希望对友友们有帮助!!!



版权声明:本文为naoguoteng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。