Об операторе присваивания Java - PullRequest
0 голосов
/ 15 июля 2010

Если я определю

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 Ответ

4 голосов
/ 15 июля 2010

Я не уверен насчет первой ошибки, она выглядит нормально.В будущем вы должны опубликовать сообщение об ошибке точный .Вы никогда не должны игнорировать сообщения об ошибках, так как они сообщают что-то о причине проблемы.Вторая ошибка очевидна, это несоответствие типов : C не extends B, поэтому вы не можете присвоить экземпляр C ссылке, которая объявлена ​​как B.Чтобы исправить это, вы должны объявить его как C, A или Object (поскольку это неявный суперкласс всех классов).

Далее, ваш class Cне компилируется, так как конструктор называется A() вместо C(), но это, вероятно, будет ошибкой копирования;)

См. также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...