Java接口

一、定义

接口就是指一个方法的集合,接口中的所有方法都没有方法体,在Java语言中,接口是通过关键字interface来实现的。

1.如何定义接口:定义接口中的成员

JDK1.7及以前

  • 全局常量:public static final 的
  • 抽象方法:public abstract 的

JDK8

除了定义全局常量和抽象方法之外,还可以定义静态方法默认方法
知识点:

  • 接口中定义的静态方法,只能通过接口来调用
  • 通过实现类的对象,可以调用接口中的默认方法
  • 如果子类(或实现类)继承的父类和实现的接口中声明了同名同参的默认方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法–>类优先原则
  • 如果实现类实现了多个接口。而这多个接口中声明了同名同参的默认方法,那么在实现类没有重写此方法的情况下,报错–>接口冲突

2.接口与类的相似点和区别

接口与类相似点:
  • 一个接口可以有多个方法
  • 接口文件保存在.java结尾的文件中,文件名使用接口名
  • 接口的字节码文件保存在.class结尾的文件中
  • 接口相应的字节码文件必须在与包名称相匹配的目录结构中
接口与类的区别:
  • 接口不能用于实例化对象。(因为有抽象方法)
  • 接口没有构造器
  • 接口中所有的方法必须是抽象方法
  • 接口不能包含成员变量,除了static和final变量
  • 接口不是被类继承了,而是要被类实现
  • 接口支持多重继承

3.解释:接口为什么要被实现,类怎么不实现类

首先:类为什么要继承类?
答:继承是父类中有非抽象内容可以直接拿来使用;而对于接口来说,内部都是抽象的,子类只能把父类实现后再实例化,才可以使用。

4.接口的特性

  • 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字
  • 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键子
  • 接口是对外暴露的规则
  • 接.口是程序的功能扩展
  • 接口中的方法都是公有的。

二、规则

1.接口优先原则

当一个操作既可以使用抽象类又可以使用接口,则优先使用接口

2.接口命名规范

接口使用大写 I 开头

3.接口使用规则

子类要想使用接口,用implements关键字,一个子类可以同时实现多个接口(避免了单继承局限)

子类名称 implements 接口名称[, 其他接口, 其他接口..., ...] 

4.子类命名规范

例如接口名为IMyInterFace,子类实现此接口名为MyInterFaceImpl

5.接口使用限制

接口中只允许public权限(无论是常量还是方法),即便程序员不写public,在接口中也默认为public

6.阿里编码规范

  • 接口中不要出现任何修饰符号,即便是public也不行
  • 当子类既需要实现接口,又需要继承抽象类时,请先使用extends继承一个抽象类,再用implements实现多个接口
  • 一个抽象类也可以使用implements实现接口,而接口不能继承抽象类
  • 接口可以使用 extends继承多个父接口(接口多继承)

7.接口的应用

  • 定义操作标准
  • 表示能力
  • (了解)分布式开发之中暴露远程服务方法

8.重写接口中声明的方法时,需要注意以下规则:

  • 类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。
  • 类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。
  • 如果实现接口的类是抽象类,那么就没必要实现该接口的方法。

9.在实现接口的时候,也要注意一些规则:

  • 一个类可以同时实现多个接口。
  • 一个类只能继承一个类,但是能实现多个接口。
  • 一个接口能继承另一个接口,这和类之间的继承比较相似。
  • 当一个类实现了另一个接口后,子类必须对接口中的抽象方法全部覆盖,子类才可以实例化,否则子类只是一个抽象类。

10.代码演示多实现

interface Inter{
	public static final int NUM=3;
	public abstract void show();
}
interface InterA{
	public abstract void method();
}
class Test implements Inter,InterA{
	public void show() {
		
	}
	public void method() {
		
	}
}
/*
 * 支持多实现的原因:接口中没有方法主体,可以由子类任意定义
 */
public class InterfaceDemo {

	public static void main(String[] args) {
		
	}
}

11.为什么Java中有些接口没有任何方法?

在Java语言中,有些接口内部没有声明任何方法,也就是说,实现这些接口的类不需要重写任何方法,那么没有任何方法声明的接口又被叫做标识接口,标识接口对实现它的类没有任何予以上的要求,它仅仅充当一个标识的作用,用来表明实现它的类属于一个特定的类型。这个标签类似于汽车的标志图标,每当人们看到一个汽车的标志图标时,就能知道这款汽车的品牌。Java类库中已存在的标识接口有CloneableSerializable等。在使用时会常用instanceof来判断实例对象的类型是否实现了一个给定的标识接口。

三、抽象类与接口的区别

区别抽象类接口
1结构组成普通类+抽象方法抽象方法+全局常量
2权限各种权限public
3子类关系使用extends关键字继承抽象类使用implements关键字实现接口
4关系一个抽象类可以实现若干接口接口不能继承抽象类,但是接口可以使用extends关键字继承多个父接口
5子类限制一个子类只能继承一个抽象类一个子类可以实现多个接口
6设计理念强调所属关系,is - a强调特定功能的实现,has - a
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值