初学JAVA——接口
来源:互联网 发布:骑兵进阶数据 编辑:程序博客网 时间:2024/06/04 00:41
接口是什么
接口是java语言提供的另一种重要的功能,它的结构与抽象类非常相似。
接口被用来建立类与类之间的协议。
Java用多实现来代替多继承
接口的定义和实现
- 接口的定义
[public] interface 接口名称 [extends 父接口(多个父接口用逗号隔开)]{ [public][static][final] 数据类型 成员变量名 = 常量; ... [public][abstract] 返回值的数据类型 方法名(参数);}
- 接口的实现
class 类名称 implements 接口名1,接口名2...{ //如果接口中的方法没有全部实现(重写),类需要定义为抽象类}
接口中的成员变量和成员方法的特点
- 接口中成员变量的特点
所有的成员变量都是static和final的。在定义的时候不能不初始化。
import java.util.*;public interface RandVals{ int NUMBER = 5; //可以直接初始化 public static final int NUMBER1 = 6; //public和static可写可不写 Random RAND = new Random(47); int RANDNUMBER = RAND.nextInt(10); //可以用随机数初始化 //int C //此句错误,定义时不能不初始化}//接口中的成员变量储存在接口的静态存储区域,可以直接用接口名调用public class TestRandVals{ public static void main(String[] args) { System.out.println(RandVals.NUMBER); System.out.println(RandVals.NUMBER1); System.out.println(RandVals.RANDNUMBER); }}
- 接口中的成员方法的特点
所有成员方法都是public和abstract
接口的继承和嵌套
- 接口的多继承
通过继承接口来扩展接口
在java中允许接口存在多继承而不允许类存在多继承
允许接口多继承的原因是接口中的方法没有方法体
interface A{ void fight();}interface B{ void swim();}interface C{ void run();}interface D extends A,B,C{//继承接口A,B,C来扩展接口D void fly();}public class Main implements D{ public void fight() {}; public void swim() {}; public void run() {}; public void fly() {};}
使用接口多继承的注意事项
在接口的多继承中,如果继承两个具有相同方法名而返回值不同的接口时,会发生什么?
interface A{ void fight();}interface B{ int fight();}/*interface C extends A,B{ //此接口会报错。 //错误信息:The return types are incompatible for the inherited methods A.fight(), B.fight() //个人理解:C继承A,B后,相当于C中拥有两个方法:void fight()和 int fight(),java中不允许存在具有相同方法名而返回值不同的方法}*/
同样的道理,在实现接口中也会出现这样的问题
interface A{ void fight();}public class Main implements A{ // int fight() {}; 此句错误:The return type is incompatible with A.fight()}
- 接口的嵌套
接口可以嵌套在接口中
特点:嵌套的接口一定是public的
实现某个接口时,并不需要实现嵌套在其内部的任何接口
interface A{ void a(); interface B { void b(); } //private interface C {} 此句错误:The interface member type C can only be public}class Main implements A{ public void a() {}}class Main1 implements A.B{//嵌套接口的实现 public void b() {}}
接口也可以嵌套在类中
特点:类中的接口可以是私有的(private)。
私有的接口只能被定义它的类实现
class A{ public interface B { void b(); } private interface B1 {//类中的接口可以是private的 void b1(); } public class C implements B1 {//可以用public类实现private接口 public void b1() {} } private class C1 implements B1 {//可以用private类实现private接口 public void b1() {} }}
关于Java中接口的知识点,我目前只会这些。
有什么建议或者错误的地方,请评论,谢谢。
2 0
- 初学JAVA——接口
- 初学MongoDB(三)——c++ (java)接口
- 初学Java,接口(十七)
- 初学Java,接口(十七)
- 接口 /java初学
- 初学Java—心得体会
- 《Java专栏》— 初学Java
- Java——初学eclipse
- 初学Java——ArrayList
- java基础—初学总结
- 初学Java,面向接口编程,命令模式
- 有关接口编程——写给初学ArcEngine的人
- 初学java集合-map—API
- Java——接口
- Java——接口
- Java——接口
- 3. 初学Java多线程:使用Runnable接口创建线程
- 初学Java多线程【3】:使用Runnable接口创建线程
- 第 0006 题:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词
- qsrand用法
- android选择时间攻略
- 在/sysfs文件系统中添加和删除文件
- DBMS_LOB包的常量,函数,过程
- 初学JAVA——接口
- UIbutton的倒计时实现
- 美团面试
- ARM反汇编练习
- Http与HttpClient(已被废弃)通信的介绍,附带一个Http发送GET请求工具类的例子
- POJ 2546 Circular Area【计算几何,计算两圆相交面积】
- Volley Http缓存机制
- 网格系统 CSS Grid Layout
- 几种常见数据库连接池的使用比较