关于实现接口中抽象方法的小感悟

最近在重温IO流以及对集合中元素升降序排序的过程中,频繁使用到了用匿名内部类去创建一个接口的子类对象并实现接口中的方法。

例如在使用排序的比较器接口(Comparator)以及File类中过滤文件的接口(FilenameFilter)时,通过查源码发现Comparator接口有两个方法需要被实现,其中一个是int compare(T o1, T o2);另一个方法是boolean equals(Object obj);而FilenameFilter接口只有一个方法,即 boolean accept(File pathname) 需要被实现。

但是本人在eclipse中使用匿名匿名内部类去创建Comparator接口还有FilenameFilter接口的子类对象并实现接口中的方法时发现,eclipse默认只弹出来一个方法需要被实现,如下图。我当时十分纳闷了,为什么Comparator的匿名内部类没有让我去实现它里面所有的两个方法呢?

// 用匿名内部类的方式创建一个比较器接口的子类对象:Comparator
		new Comparator<String>() {

			@Override
			public int compare(String o1, String o2) {
				// TODO Auto-generated method stub
				return 0;
			}
			
		};

后来想明白了,是这样的:

Java中,接口可以被类给实现(implements),也可以被接口给继承(extends);

当一个类去实现(implements)一个 接口的时候,则必须实现接口中所有的抽象方法(前提:这个类是非抽象类)。

而一个接口去继承(extends)另一个接口的时候,则并没有强制要求实现父类接口中所有方法。

而匿名内部类的本质是一个实现了接口或类中方法的子类对象,既然是子类,那么说明它们间是继承关系,所以并不需要实现父类接口中的所有方法。

  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

DeveloperYancc

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者