java 接口的概念

1.接口属于一种特殊的类,如果一个类定义时全部由抽象方法和全局变量组成,那么这种类就称为接口,而接口使用interface关键字定义的.

定义接口

interface A{  //定义接口
    public static final String IN="韦蝠王";
    public abstract void print();
    }
    interface B{
          public abstract void get();
          }

在接口中,同样存在抽象方法,但是接口对象无法直接进行实例化操作,所以接口使用如下:
1.每一个接口必须定义子类,子类使用implements关键字实现接口;
2.接口的子类(如果不是抽象类)必须覆写接口中所定义的全部抽象方法;
3.利用接口的子类,采用对象的向上转型方式,进行接口对象的实例化操作.

2.子类实现接口
class 子类 [extends 父类][implements 接口1,接口2,…]{}
通过格式发现,每一个子类同时可以实现多个接口,但是只能继承一个父类(或抽象类).

如下代码
在这里插入图片描述
运行结果
定义的子类X同时实现A和B两个接口,所以在X类中要同时覆写A和B两个接口中的抽象方法.而后利用向上转型的方式,通过子类为父类接口进行对象实例化操作.
在这里插入图片描述

3.子类继承抽象类同时实现接口

package class2;

interface B{//定义接口
    public static final String IN="韦蝠王";
    public abstract void print();
}
interface C{//定义接口
    public abstract void get();
}
abstract class D{
    //定义抽象类
    public abstract void fun();
}
class  Y extends D implements B,C{  //实现两个接口
    @Override
    public void print() {
        System.out.println("Hello World");
    }
    public void get(){ //方法覆写
        System.out.println(IN);

    }

    @Override
    public void fun() {
        System.out.println("芷若 你好");
    }
}
public class Test12 {
    public static void main(String[] args) {
        B b=new Y(); //子类为接口实例化
        C c=new Y(); //子类为接口实例化
        D d=new Y();  //子类为抽象类实例化
        b.print();
        c.get();
        d.fun();
    }

}
运行结果

在这里插入图片描述
接口中的全部组成就是抽象方法全局常量,那么在开发中这两种定义接口最终效果完全一致.

interface A{//定义接口
    public static final String IN="韦蝠王";
    public abstract void print();
}
interface A{//定义接口
    public  String IN="韦蝠王";
    public  void print();
}

接口中访问权限就只有一种:public,即定义接口方法的时候就算没有写上"public",最终也将是public.

4.在java中,每一个抽象类都可以实现多个接口,一个接口却不能继承抽象类,但是一个接口却可以同时继承多个接口,实现接口的多继承.

interface B{//定义接口
    public  void printB();
}
interface C{//定义接口
    public void printC();
}
interface D extends B,C{         //一个接口继承多个接口
public void printD();
}
class  Y implements D{  //实现两个接口
    puclic void printB(){}
    puclic void printC(){}
    puclic void printD(){}
    }

在开发中,内部类永远不会受到概念的限制,在一个类中可以定义内部类,在一个抽象类中也可以定义抽象内部类,在一个接口中可以定义内部抽象或内部接口,实际讲,用户自己定义内部抽象类或内部接口是比较少见的,而且在定义内部接口时如果使用了static表示一个外部接口.

5.使用static定义内部接口
X类实现的是一个Z接口的内部接口R,由于内部接口R使用了static关键字声明,所以此接口就为外部接口,子类可以直接实现.

在这里插入图片描述
运行实例
在这里插入图片描述
6.抽象类和接口的区别
在这里插入图片描述
抽象类和接口实际上都可使用,没有限制,但是抽象类缺点—一个子类只能够继承一个抽象类,存在单继承局限,遇到抽象类和接口使用,有些考虑接口,避免单继承局限.

发布了60 篇原创文章 · 获赞 3 · 访问量 2205

猜你喜欢

转载自blog.csdn.net/ysy_1_2/article/details/104210786