0

刚刚在单元测试中有这个。所以:

abstract class A {...}

class B extends A {...}

A a = new B();

非常怀疑它是否可行,但我现在完全糊涂了。课程内容无关紧要。

4

6 回答 6

1

polymorphism是的,这个概念在 java中被称为。父类可以包含子类的引用。和 parent 可以是interfaceabstruct class。甚至you need not to cast。例如 。

a animal can be horse or cat  , here animal is an interface or abstract class. 

我推荐(SCJP Sun Certified Programmer -kathy sierra)这本书有很多与 Java 语言相关的概念。

于 2013-10-03T08:34:09.340 回答
0

是的,这在java中有效

abstract class A {...}

class B extends A {...}

A a = new B();
于 2013-10-03T08:20:36.923 回答
0

是的,这是一个有效的 java 赋值语句。

A a = (A) new B(); 

在java中,可以从父类中引用子对象。

于 2013-10-03T08:31:44.863 回答
0

这是有效的。根据 Java 的基本规则“超类引用 (A a) 可以引用子类对象 (b=new B())”。

于 2013-10-03T08:31:54.513 回答
0

它在java中有效。这称为隐式向上转换(JVM 将子类型转换为超类型对象),其中超类型的引用可以引用子类型,但使用超类型引用,您只能访问在超类型中声明/定义的那些变量和方法.

于 2013-10-03T09:30:39.357 回答
0

接口 - 无论您是否声明它,每个方法始终是公共的和抽象的。您不能使用以下修饰符声明接口方法。无论我们是否声明,接口中存在的每个变量始终是 public static 和 final 的。您不能使用以下修饰符声明接口变量:private、protected、transient 和 volatile。抽象类中存在的变量不必是公共的、静态的和最终的。对抽象类变量修饰符没有限制。对于抽象类变量,在声明时不需要执行初始化。抽象类可以声明实例和静态块。在接口内部我们不能声明实例和静态块,否则我们会得到编译时错误。接口不能声明构造函数。

于 2017-03-13T01:00:35.213 回答