最近在一次采访中,我被问到,“Java中的动态多态性示例是什么?”
我回答:“方法覆盖”。
然后,面试官问:“是否有任何压倒一切的概念不属于动态多态性?”
这真的是个好问题吗?如果是,答案是什么?
提前感谢。
如果问题是关于C,那么答案应该是“是”,因为成员功能不必是虚拟的。然而,在Java中,所有方法在C语言中都是虚拟函数,因此不涉及动态分派就不可能涉及重写的概念,这会导致多态行为。
将成员命名为与超类成员相同的任何其他示例都不称为重写,而是隐藏,并且是一个完全不同的概念:子类成员与超类成员毫无关系,只是碰巧具有相同的名称。子类甚至可以继承同名成员,因此有两个同名成员,仍然可以通过用类名限定成员名来访问这两个成员。
我在类A中创建了两个方法,并在类B中重写,如下所示。我有一些关于动态多态性和重写的问题。 重写和动态多态总是同时发生吗?
然而,我不确定我是否理解他的观点,因为根据我的理解,当我们有一个父类引用变量指向子类对象时,一个行为被认为是多态的(侧重于动态多态性)。 然后在运行时获取父类变量所指向的实际对象,并调用其方法,如这里所解释的那样。 但是,我没有在我的项目中使用上向转换(即用对象类变量初始化POJO类)。 因此,我的问题是--尽管父类(对象)从未用作引用变量,但重写toString()是否被视为多态性? 我在Sta
如果方法是private,static或final,则通过重载实现静态多态。 那么重载公共和默认方法呢?
问题内容: 我有2节课: 但是当我跑步时 我得到以下输出: 谁能帮助我了解为什么会这样?a属性的值在方法add中更改,如第二行输出所示…为什么它返回到原始值? 问题答案: 在Java中,字段不会被覆盖,而是被隐藏。这意味着和是 独立的 ,可以被改变并且分别查询字段。因为您的变量的类型为,所以表达式返回超类字段的值。但是该方法 被 覆盖并调用子类方法,该方法将修改子类字段。 隐藏字段很少有意义,因此
在下面的代码中,我想使的“checked”属性动态化。显然,是一个布尔值。编译在的开始处失败,错误为
https://wiki.haskell.org/polymorphism说 特别多态性是指当一个值能够采用几种类型中的任何一种时,因为它或它使用的值已经为这些类型中的每一种类型赋予了单独的定义。例如,+运算符在应用于浮点值时所做的事情与应用于整数时完全不同--在Python中,它甚至可以应用于字符串。大多数语言至少支持一些特殊的多态性,但在像C这样的语言中,它仅限于内置的函数和类型。其他语言,如