gpt4 book ai didi

java - 是将编程转换为实现吗?

转载 作者:行者123 更新时间:2023-11-29 03:51:43 28 4
gpt4 key购买 nike

我有一个子类,它有一个来自父类(super class)的额外方法,所以当我需要使用该方法时,我需要转换父类(super class)。

我想知道这是否违反了对接口(interface)的编程?

如果是,那么在父类(super class)中实现子类的空白方法并仅在我需要它的子类中覆盖它的权衡是什么?如果这会使它编程为接口(interface)?

最佳答案

..if this was a violation of programming to an interface? :是的,绝对。

请引用Liskov substitution principle了解详情。具体如下:

Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.

简单的解释可以是这样的:

应该可以通过引用 interface 来执行这可以通过 specific implementation 来完成.如果不可能,则违反了使用接口(interface)的约定。

例如,如果某事是这样完成的

List<String> violating = new LinkedList<String>();
((LinkedList<String>)violating).addFirst("violating");

实际上声明List<String> violating是没有意义的因为它需要使用 addFirst .所以最好使用 LinkedList<String> violating这里。这应该可以解决其余的困惑。

关于java - 是将编程转换为实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8465218/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com