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方法

 

你可能感兴趣的:(java中的小问题)