Java接口

接口:

接口就是一种公共的规范标准,只要符合规范标准大家都可以通用.

接口的基本定义格式:
接口就是多个类的公共规范.
接口是一种引用数据类型,重要的内容就是其中的,抽象方法
public interface 接口名称{
//接口内容
}
换成了关键字interface之后,编译生成的字节码文件仍然是, java—>.class
接口中可以有:
常量 抽象方法 默认方法 静态方法 私有方法
在任何版本中,接口都能定义抽象方法
public abstract 返回值类型 方法名称(参数类型);
注意事项:接口当中的抽象方法,修饰符必须是两个固定的关键字 ----> public abstract
这两个关键字修饰符,可以选择性的省略,接口当中定义的就是抽象方法。
方法的三要素可以随意定义.
接口中的抽象方法的使用:
接口不能直接使用,必须有一个"实现类"来实现接口.
格式:
public class 实现类名称 implements 接口名称{
//…
}

接口的实现类必须覆盖重写(实现)接口中所有的抽象方法
		接口的使用,必须通过他的实现类来完成,接口的实现类必须重写覆盖其中所有的抽象方法。
 实现:去掉abstract关键字,加上方法体大括号.
 创建实现类对象,进行使用.
 如果实现类并没有覆盖从写接口中所有的抽象方法.
 那么这个实现类自己就必须是抽象类
	抽象类也不能直接创建,也不许new抽象类的子类覆盖重写父类中的抽象方法来完成  

接口中默认方法的定义:

从java.8开始,接口里允许定义默认方法,默认方法可以有方法体
public default 返回值类型 方法名称(参数列表){

}
接口当中的默认方法可以解决接口升级的问题
接口中的常量
	接口当中可以定义成员变量;
	但是必须使用public static final三个关键字来修饰

效果上看,这就是接口的常量.
格式:public static final 数据类型 常量名称 = 数据值;
一旦使用final关键字修饰,说明不可变.
接口中如何定义常量。

注意事项:

 接口当中的常量可以省略public static final,  但是不写照样是这三个
     接口当中的常量必须赋值,不能不赋值. 必须手动赋值.
 接口中常量的名称使用完全大写,用下划线进行分割,这是规范命名.

使用时,直接通过接口名称 . 即可 

接口的内容:

	成员变量其实就是常量;public static final 数据类型 常量名称 =数据值;
	常量必须赋值,名称全部大写,用下划线进行分割
	接口中最重要的就是抽象方法
		public abstract 返回值类型 方法名称(参数列表);
	  实现类必须覆盖重写接口中所有的抽象方法,除非接口为抽象类
	 	从java.8开始,接口中允许定义默认方法
		public default 返回值类型 方法名称(参数列表){ 方法体  }
			默认方法也可以被覆盖重写,如果没有覆盖重写用抽象类的,附近该重写了则使用实现类的
	从java.8开始接口中可以定义静态方法
			public static 返回值类型 方法名称(参数列表) { 方法体  }
			接口中可以定义静态方法。
		  	public可以省略
		应该通过接口名称进行调用,不能同通过实现类对象调用接口中的静态方法
	从java.9开始,接口允许定义私有方法,
		普通私有方法:private 返回值类型 方法名称(参数列表){ 参数列表 }
			静态私有方法:private static 返回值类型  方法名称(参数列表){ 方法体 }
		private的方法只有接口自己才能调用,不能被实现类或者别人使用.

	接口不能有静态代码块。
	接口不能有构造方法。
		继承关系中子类可以有自己的构造方法。
		一个类的直接父类有且只有一个,但是一个类可以同时实现多个接口
		public class MyInterImpl implements MyInterA,MyInterB{  
				
			//覆盖重写所有的抽象方法
			
		}
		如果抽象方法存在相同,只需要覆盖一次即可.
	如果实现类没有覆盖重写所有接口当中的抽象方法,那么实现类就必须是一个抽象类.
	如果实现类实现的多个接口当中,存在重复的默认方法,,那么实现类一定要对默认的冲突方法覆盖重写
	一个类如果直接父类当中的方法和接口当中的默认方法产生冲突,优先用父类.
		继承自父类,然后再实现接口,父类中和接口中默认方法相同,优先使用父类.
		java中继承优先于接口实现.
类与类之间是单继承的,直接父类只有一个
	类与接口是多实现的,一个类可以实现多个接口
接口与接口之间是多继承:
	public interface MyInter extends MyInterFaceA,MyInterFaceA {  }
		多个父接口当中的抽象方法如果重复,没关系
			多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写,而且带着default关键字
			default关键字不能省略。

============================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值