java 接口简单介绍

       在java语言学习中,会很早的接触到接口这一概念,作为一个从c语言转java的学习者,在初次面对接口这一抽象的概念时是会感到一些迷茫的。在经过一段时间的学习与练习后,我对接口也逐渐有了自己的认识,这篇博客主要基于我个人的理解对接口简单的进行介绍。

        java中存在有继承关系,一个类可以继承自另一个类,此时称这个类为子类,他继承的类为父类,子类可以重写父类方法。如果子类不重写父类方法,我们在调用这一子类时"."一下也可以发现其中存在有父类的方法供我们使用。然而,继承存在着诸多限制,诸如喜闻乐见的“父类的父类不是我的父类”以及一个类最多只能继承一个类等。可是在实际应用中,为了实现很好的泛用性与结构层次,一个类往往需要同时继承自多个类,此时接口就发挥了作用。

       在我的理解中,接口与类近乎是一个层次的,接口相较于类的抽象程度要更高一层。假设我们有一个类,将这个类的名字,方法名抽象出来就成为了一个接口。类似于将类中字段,方法的实现体放入黑盒中,只提供方法名给外部,让使用者知道这一接口中有哪些方法,都有什么用即可,其余的均不展示。

       对接口的继承称为实现,一个类可以实现多个接口来使用接口中的方法,接口中方法并不具备实现体,是个空壳,所以我们要让这些方法正常工作往往需要为每个接口写一个实现类来让其能够实现功能。在实际写一个java应用时,设计好结构层次并写好接口会使得之后我们对各个层次类的书写更有序,避免混乱。注意的是,如果一个类继承了某个接口,而这一接口中的抽象方法在其父类中不存在时,在这一类中需要对这一接口重写实现。

       java中接口还可以写静态方法,静态方法可以存在实现体,以default,static来修饰,static修饰的方法不可以某个已经实现的对象访问,而default可以,即假设我们有接口interface A,其内静态方法B,创建一个A新接口对象C,那么如果B是static的只能A.B,不能C.B,如果B是default的,则可以C.B。

在我的一个代码项目中写的java接口:

public interface IntervalSet<L> {

	/**
	 * 创建一个空对象并返回
	 * @param <L> L应为不可变类型
	 * @return 一个空的时间轴集合
	 */
	public static <L> IntervalSet<L> empty() {
		return new CommonIntervalSet<L>();
    }
	
	/**
	 * 向集合中插入一个新的时间段和标签
	 * @param start 新的时间段开始时间,不得输入非时间数
	 * @param end 新的时间段结束时间,不得小于开始时间
	 * @param label 新时间段标签,不得与已有标签重合
	 */
	public boolean insert(long start, long end, L label);
	
	/**
	 * 获得当前对象的标签集合
	 * @return 一个包含有当前对象所有标签的集合
	 */
	public Set<L> labels();
	
	/**
	 * 从当前对象中移除某个标签所关联的时间段
	 * @param label 要移除的标签,必须存在于集合之中
	 * @return 返回一个boolean类型,如果移除成功为true,否则为false
	 */
	public boolean remove(L label);
	
	/**
	 * 返回某个标签对应的时间段的开始时间
	 * @param label 要查询的标签,必须存在于集合之中
	 * @return 要查询标签对应的起始时间
	 */
	public long start(L label);
	
	/**
	 * 返回某个标签对应的时间段的结束时间
	 * @param label 要查询的标签,必须存在于集合之中
	 * @return 要查询标签对应的结束时间
	 */
	public long end(L label);
	
	/**
	 * 返回对应L的Interval
	 * @param 对应的L,必须存在
	 * @return L对应的Interval
	 */
	public Interval getInterval(L label);
	
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值