当我宣布“抽象公共无效显示();”在抽象类测试中,这是创建一个全新的show()方法,还是只引用Inter接口中声明的show()方法?请澄清。
interface Inter
{
void show();
}
abstract class Test implements Inter
{
abstract public void show(); //What does this line signify?
}
显式地在类中放置一个抽象的show
方法没有任何功能效果-任何扩展这个抽象类的具体类无论如何都必须实现show()
,因为它是在类实现的接口中定义的。
一些编码惯例鼓励列出这些方法,以使它们的存在更加明显,但这主要是一个品味问题。
正如您可能已经测试过的那样,删除抽象类中的声明不会产生错误。它可以被安全地移除。
如果我要推测这一冗余代码行的原因,其中一个原因是使Test
的子类更容易实现所需的html" target="_blank">方法。
想象一下,您正在尝试编写一个测试
子类,但问题所在的行不在那里。您可以查看Test
的定义,找到要实现的方法,但什么也找不到。你必须通过fo toInter
来了解需要实现哪些方法。现在想象一下,继承的链条会更深。你看到了要实现哪些方法需要查看多少层的类吗?
然而,使用像IntelliJ这样的现代IDE可以避免此类问题。它告诉您需要自动实现哪些方法。
当我在抽象类Test中声明“抽象公共无效show();”时,这是创建了一个全新的show()方法还是仅仅引用了接口Intert中声明的show()方法?请澄清。
这不会创建新方法(没有隐藏)。它覆盖了inter
中声明的方法。这是IntelliJ的屏幕截图:
带有向上箭头的小“O”表示覆盖。
问题内容: 我发现情况: 问题答案: 您同时满足这两个条件;即。一种实现是同时满足抽象类要求和接口要求。 注意,除非在另一个继承链中使用,否则不需要它。另外,将其移至抽象类定义可能很有意义。
本文向大家介绍php中的抽象方法和抽象类,包括了php中的抽象方法和抽象类的使用技巧和注意事项,需要的朋友参考一下 1、什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法。所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰。 例如: 2、什么是抽象类? 只要一个类里面
我想读关于抽象的文章,但读到不同的文章,我感到很困惑。 下面是我无法理解的问题: 1)“抽象是通过使用抽象类和接口实现的吗?”我对此进行了搜索,得到了三种类型的答案: 与此处解释的不同。 它们是相同的,只是不同的观点,就像这里解释的。 最后一个是抽象类用来实现抽象。 哪一个是真的?请举一个简单的例子。 2)“抽象意味着隐藏不必要的细节。比如专注于一个对象做什么而不是它是如何完成的。” 这是正确的吗
问题内容: Java 8接口默认方法与抽象类中的非抽象方法-两者之间是否有任何区别(除了iface-类,可见性等不同) 默认方法不是Java的后退一步,是否违反Java多年来宣传的本质? 问题答案: 如果抽象子类的具体子类被super()覆盖,则抽象类中的非抽象方法将被调用。因此,存在多种可能性。如果不重写method,则将执行超类方法。如果我们在具体的子类方法中使用super(),则将执行被超类
Java 8接口默认方法与抽象类中的非抽象方法--两者之间有什么区别吗(除了iface-class、可见性等的区别之外) 默认方法是不是在Java中倒退了一步,意味着它违背了Java多年来宣传的本质?!
嗨,我有一个抽象类,其中有一些公共方法和一些抽象方法。我让公众知道,他们实现了派生类的通用方法。 让我困惑的是,为什么我想定义一个公共抽象方法,而不是受保护的抽象方法。在抽象类中定义公共抽象方法对我来说毫无意义。。。。因为if是一个抽象,在派生类中会被重写,但if被定义为public也是一样的,但在某种程度上,将其定义为protected更有意义,因为我们知道,我们将在派生类中重写它。 在抽象类中