PHP技术那点事
全部
技术
PHP
MySQL
前端
Linux
JAVA
退出
编辑文章
选择分类
PHP
MySQL
前端
Linux
Java
工具
选择专栏
设计模式
java基础
Angular学习
Java面试题
描述:
Java 接口
封面图上传 :
+
点击上传图片
### 接口 #### 接口基本概念 如果一个类之中只是由抽象方法和全局常量所组成,这种情况不会定义为抽象类,而是定义为接口,所谓接口就属于特殊抽象类,这个**类只有抽象方法和全局常量,连构造方法都没有。** 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 **public abstract**(只能是 public abstract,其他修饰符都会报错)。 接口中可以含有变量,但是接口中的变量会被隐式的指定为 **public static final** 变量(并且只能是 public,用 private 修饰会报编译错误) 一个抽象类可以去继承一个抽象类,**一个接口可以通过extends关键字继承多个接口,但是接口不能继承抽象类** ```java interface A {//定义接口 public static final String name = "HELLO";//全局常量 public abstract void fun();//抽象方法 } ``` - 接口必须要有子类,但是一个子类可以使用**implements关键字实现多个接口**。 - 接口的子类(如果不是抽象类), 必须覆写接口中的全部抽象方法 - 接口的对象可以利用子类对象的向上转型进行实例化操作。 #### 实现多个接口案例 实现多接口,必须覆写实现的接口的全部抽象方法 ```java interface A {//定义接口 public static final String name = "HELLO";//全局常量 public abstract void fun();//抽象方法 } interface B {//定义接口 public abstract void get();//抽象方法 } //实现多个接口 class C implements A,B{ public void fun(){ System.out.println("实现的A接口fun方法"); } public void get(){ System.out.println("实现的B接口get方法"); } } public class TestDemo{ public static void main(String[] args){ C c = new C();//实例子类对象 A a = c;//向上转型 B b = c;//向上转型 a.fun(); b.get(); //结果 //实现的A接口fun方法 //实现的B接口get方法 } } ``` #### 接口多继承 ```java interface A {//定义接口 public static final String name = "HELLO";//全局常量 public abstract void getA();//抽象方法 } interface B {//定义接口 public abstract void getB();//抽象方法 } //继承多个接口 interface C extends A,B{ public abstract void getC();//抽象方法 } //实现多个接口 class D implements C{ public void getA(){ System.out.println("实现的A接口"); } public void getB(){ System.out.println("实现的B接口"); } public void getC(){ System.out.println("实现的C接口"); } } ``` 一个抽象类只能够继承一个抽象类,但是接口没有限制,一个子类可以继承一个抽象方法,但是却可以实现多个接口 ,**在Java中接口解决了单继承的问题** #### 接口中使用static关键字申明的接口为外部接口 如类中使用static关键字申明的类为外部类,接口中使用static关键字申明的接口为外部接口 如下: **A.B**属于继承内部接口 ```java interface A { public void funA(); static interface B{ public void funB(); } } class C implements A.B{//C 实现B接口 public void funB(){ System.out.println("hello"); } } ``` #### 总结 - 接口定义了不同层直接的操作标准 - 接口表示了一种操作能力 - 接口表示将服务带那个的远程方法试图暴露给客户端
保存文章