关于Java Assignment Operator

时间:2010-07-15 17:49:32

标签: java class inheritance

如果我定义

class A {

public int a;
public float b;
public A() { 
a = 10;
}
}

class B extends A {

public B() {
a = 2;
}
}

class C extends A {

public C() {
b = 2.0f;
}
}

在主要

public static void main(//...) {

A a = new A();
B b = new B();
C c = new C();

a = b; //error?
b = c; //this one too?

}

1 个答案:

答案 0 :(得分:4)

我不确定第一个错误,看起来很好。您将来应该发布完全错误消息。您永远不应忽略错误消息,因为它们会告诉您问题的原因。第二个错误是显而易见的,它是类型不匹配C不是extends B,因此您无法将C的实例分配给声明为B。要解决此问题,您应将其声明为CAObject(因为它是所有类的隐式超类)。

此外,您的class C无法编译,因为构造函数的名称为A()而不是C(),但这可能是一个copypaste错误;)

另见: