作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
class AA {
void run()
{
System.out.print("In AA");
}
}
class B extends AA{
void run()
{
System.out.print("In B");
}
public static void main(String z[])
{
//upcasting
AA a= new B();
a.run();
}
}
这里向上转换工作正常,但现在我尝试像这样调用父类方法..
B b=new AA();
它给出了编译时错误,因此将其强制转换。
B b=(B) new AA();
但是,我不确定为什么它没有按照我的预期工作。有什么想法吗?
最佳答案
什么
B extends AA
意思是,B
是AA
,但AA
不是B
。我们举个例子:
Employee extends Person
这意味着 Employee
是 Person
,但 Person
不一定是 Employee
。
当你这样做时字符串文字未正确用双引号关闭 AA a = new B();
a
的引用类型将为 AA
,但对象类型将为 B
。这种声明只允许调用AA
中声明的方法。
正在做
B b = new AA();
不起作用,因为 AA
不是 B
,如上面示例中所述。
关于java - 运行时多态性和向上转型、向下转型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156125/
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型。 向上转型 我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们
当使用使用 C 风格继承的 C API 时,(利用 C 结构的标准布局),例如 GLib ,我们通常使用 C 风格的转换来向下转换: struct base_object { int x;
我是一名优秀的程序员,十分优秀!