发布网友 发布时间:2022-05-01 08:41
共2个回答
热心网友 时间:2022-06-26 22:16
不是,接口中的方法只是一个【约定】,并没有实际的执行逻辑,所以实际上只有子类的方法是可以执行的。追问如果我在List中把Collection中的某个方法定义为默认实现(该默认的方法在AbstractCollection中已实现),那会不会产生接口冲突?然后超类优先?追答不会,如果你各自实现了,则访问的是子类方法
因为,你实际创建的对象不可能是父类的对象(它是abstract)。
如果,你又创建了另一个子类List2,其中该方法没有重写,那么List2类的对象调用的才是父类的方法。
热心网友 时间:2022-06-26 22:17
不会,只会存在一个。子类继承父类时会重写父类的方法,而实现接口只是对接口的方法加以具体的实现。也就是说假如存在一个同名的方法,method1,那么这个方法是只有一个的。最后调用的方法是来自于实现类。追问如果我在List中把Collection中的某个方法定义为默认实现(该默认的方法在AbstractCollection中已实现),那会不会产生接口冲突?然后超类优先?追答调用都是子类优先,子类没有才会去父类继续寻找。