全部
技术
PHP
MySQL
前端
Linux
JAVA
工具
纪念日计算器
邮记星
个人记账
笔记侠
历史上的今天
生日密码
生日书
生日密码
生日花语
博古通今
三十六计
鬼谷子
笑林广记
本草纲目
山海经
唐诗宋词
宋词300首
唐诗300首
退出
登录
注册
编辑文章
选择分类
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"); } } ``` #### 总结 - 接口定义了不同层直接的操作标准 - 接口表示了一种操作能力 - 接口表示将服务带那个的远程方法试图暴露给客户端
保存文章