【问题标题】:About Java Assignment Operator关于 Java 赋值运算符
【发布时间】:2010-07-15 17:49:31
【问题描述】:

如果我定义

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?

}

【问题讨论】:

  • 您收到错误还是想知道它是否会产生错误?
  • 想知道究竟会发生什么...价值得到分配?或者它只是忽略分配并继续程序到最后?还是突然停止?如果我写了 b = a,那么 b 会发生什么?它将成为 A 类或只是从 A 继承的 b 中的值更改...
  • 如果这就是全部问题,您为什么不自己编译和运行它自己并确定错误和/或从错误中吸取教训?
  • 哎呀,我不小心按了 delete T T 并不幸删除了其中一个答案……对不起,我不是故意的……
  • 嗯,我想知道背后是什么,而不仅仅是结果

标签: java class inheritance


【解决方案1】:

我不确定第一个错误,它看起来不错。您应该在以后发布 exact 错误消息。您永远不应忽略错误消息,因为它们会说明问题的原因。第二个错误很明显,它是类型不匹配C 不是extends B,因此您不能将C 的实例分配给声明为B 的引用。要修复它,您应该将其声明为CAObject(因为它是所有类的隐式 超类)。

此外,您的 class C 无法编译,因为构造函数被命名为 A() 而不是 C(),但这可能是复制粘贴错误;)

另见:

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 2011-11-16
    • 2015-05-02
    • 2015-03-19
    • 2012-05-26
    • 2015-04-09
    • 2013-02-14
    • 2014-04-17
    • 2018-11-30
    相关资源
    最近更新 更多