jdk1.8中的函数式接口除了本身的一个抽象方法声明外,为什么还可以包括Object类的方法的抽象声明重写?(例如:equals(),toString())

        toString和equals方法是Object的方法,  Object是所有类的默认父类,也就是说任何对象都会包含Object里面的方法,即使是函数式接口的实现,也会有Object的默认方法,所以,重写Object中的方法,不会计入接口方法中,除了final不能重写的,Object中所能重写的方法,写到接口中,不会影响函数式接口的特性

        所有interface也默认继承了Object类;这里可以把inteface看作一个抽象类的极致,也就是说本质也是一个类,这样就可以继承Object类(但实际上接口和类不同,只能继承其他接口),应该只有Object是特例,interface可能只能继承这一个类

        但interface只是重写了Object中的方法,具体实现还是靠interface的实现类,写一个interface引用是可以调用Object类中的方法的,但因为没有实现,所以运行会报错;;;但因为它的实现类也继承了Object类,所以相当于重写了Object中的方法的interface只是一个中介,连接了Object与接口的实现类,所以说,函数式接口中如果重写了Object中的方法,在计算抽象方法的数量时,是不会算入的,所以函数式接口可以重写很多Object方法

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值