接口的学习笔记
来源:互联网 发布:朝鲜第五次核试验知乎 编辑:程序博客网 时间:2024/06/06 08:30
接口是java中唯一的多对一的特殊继承关系,但接口只能继承接口,不能继承类,接口的继承也能让子接口获得接口的所有常量,抽象方法。
接口中没有初始化块和构造器,只有成员变量,方法,和内部类;而接口中的成员变量默认是被public static final修饰的,既int a = 1;与 public static final int a = 1;是完全等效的,所以接口中的成员变量只能是静态常量。和变量一样,接口中的内部类、内部接口、内部枚举等也是默认被public static修饰的。接口中有三种方法:抽象方法、类方法和默认方法;其中类方法和默认方法都必须有方法体,三种方法都是默认使用public修饰的,其中抽象方法的修饰符abstract是可以省去的,但类方法的static不能省去,使用默认方法时也必须使用default修饰符。eg:
public interface INTERFACE1 { }
public interface INTERFACE2 { }
public interface INTERFACE0 extends INTERFACE1, INTERFACE2 {//继承两个接口int a = 0;//a = 1;将出现错误,因为a是静态常量,不能第二次赋值void abstractmethod();//定义抽象方法 static void staticmethod()//定义默认方法 { System.out.println("静态方法"); }default void defaultmethod()//定义默认方法{System.out.println("默认方法");}}
接口和抽象类是一样的,都不能创建实例,可以用接口声明引用变量,但当使用接口来声明引用变量时,这个引用变量必须引用到其实现类的对象。
接口的是用implements实现的,一个类可以实现多个接口,也可以在继承的时候实现接口,不过extends要在implemrnts之前。接口的实现和继承类似,都可以获得接口中的定义的局部变量(静态常量),方法(抽象,默认)。一个类在实现接口时,如果不把接口中所有的方法都实现,则要将类定义为抽象类。
eg:
接口1:
public interface INTERFACE1 { static int number1 = 33; static void s() { System.out.println("INTERFACE1 的类方法"); } void ss(); default void sss() { System.out.println("INTERFACE1 的默认方法"); }}
接口2:
public interface INTERFACE2 { int number2 = 22; void ssss();}
类:
public class INTERFACE { public static void main(String[] args){ INTERFACE1[] array = new INTERFACE1[2];//将接口当数据类型处理 array[0] = new SS(); SS.method(array[0]); INTERFACE2 p;//用接口来声明变量 p = new SS();//引用到其实现类 p.ssss();// p[0].ssss();是错误的,因为sss()方法不是接口INTERFACE1中定义的 }}class SS implements INTERFACE1,INTERFACE2,Comparable<SS>{//Comparable接口,用于比较对象 private int A = INTERFACE1.number1 + INTERFACE2.number2; public static void method(INTERFACE1 interface1) { INTERFACE1.s();//引用接口中的类方法 interface1.ss();//引用接口中的抽象方法 interface1.sss();//引用接口中的默认方法 } @Override public void ss() { System.out.println("INTERFACE1 的抽象方法"); } @Override public void ssss() { System.out.println("INTERFACE2 的抽象方法"); } @Override public int compareTo(SS o) { return 0; }}输出结果为:
INTERFACE1 的类方法
INTERFACE1 的抽象方法
INTERFACE1 的默认方法
INTERFACE2 的抽象方法
有一种接口没有任何变量和方法,这种接口叫标记接口,例:Cloneable接口(克隆)。
- 接口的学习笔记
- [学习笔记]接口的作用
- 【学习笔记】接口的理解
- 学习笔记 继承与接口的学习
- 【selenium学习笔记】常用的WebElement接口
- delphi下的接口编程学习笔记
- Apache Mina的IoService接口学习笔记
- 学习笔记:ServletContext接口
- Query接口学习笔记
- Hessian接口学习笔记
- java接口学习笔记
- Hessian接口学习笔记
- ISprite接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- c++ 嵌套类
- Thinkphp关联模型使用field或getField函数
- 进入第一个Android应用界面
- 我的第一篇博客
- 高通平台LCD移植概述
- 接口的学习笔记
- Codeforces Round #316 (Div. 2) D 【dfs序+二分】
- delphi idhttp post
- 京东笔试题 年终奖
- c++作业3
- 基础DOM和CSS操作
- JAVA中获取当前系统时间
- 网络编程POSIX规范要求数据类型
- 京东2016笔实习生在线笔试题