解释一下这句:AClass db1=new BClass();

njtimenowht 2008-11-05 06:59:07
class AClass
{
public void f(int a)
{
System.out.println("AClass "+ a);
}
}


class BClass extends AClass //继承AClass类

{

public void f( int a)
{
System.out.println("BClass"+a);
}
}


class WhatKind
{
public static void main(String[] args)
{

AClass db1=new BClass();//这句话什么意思?

db1.f(2);


}
}


请问:
AClass db1=new BClass();这句话的db1是哪个类的对象
我运行了一下,db1调用的是BClass类的方法f.但为什么声明的是AClass呢
...全文
129 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
badboy_blue 2008-11-06
  • 打赏
  • 举报
回复
父类引用指向子类对象...引用是父类AClass,但生成对象是子类BClass

欢迎加入 JAVA交流群 72923840

twinsouzhili 2008-11-06
  • 打赏
  • 举报
回复
AClass db1=new BClass(),db1是AClass声明,然后是把新建的子类对象引用给父类的声明变量db1,就是这样吧!
jianvhen 2008-11-05
  • 打赏
  • 举报
回复
Java的看家特点。。。。 UP
Ji秋风 2008-11-05
  • 打赏
  • 举报
回复
继承的基本用法。
jxxx2967 2008-11-05
  • 打赏
  • 举报
回复
向上转型,实现多态(动态绑定)的基本思想。
ZiSheng 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhujiahill 的回复:]
http://topic.csdn.net/u/20081105/14/d136ddfa-c285-4948-8001-a1405bbec649.html
这种问题回答了N遍了
[/Quote]
domimasi 2008-11-05
  • 打赏
  • 举报
回复
这就是动态绑定了.当满足一下三个条件:
1.有类被继承
2.类的方法有被重载
3.子类指向父类的引用.
就构成了多态的动态绑定.在这种情况下,db1的具体类容要根据他实际指向的内容在编译的时候才能确定.所以叫动态绑定.

有一点要注意的就是,如果方法没有被重载,那么db1只能调用classA的内容,classB中定义的方法将被屏蔽(upcasting)

zhongwenly 2008-11-05
  • 打赏
  • 举报
回复
对象高级特征,动态绑定,也叫多态,可以带来设计上的灵活性
qusic 2008-11-05
  • 打赏
  • 举报
回复
BClass继承自AClass,所以
AClass的引用可以指向BClass的对象
多态的一种
也就是说BClass的对象可以当作AClass的对象来用
zhujiahill 2008-11-05
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20081105/14/d136ddfa-c285-4948-8001-a1405bbec649.html
这种问题回答了N遍了
njtimenowht 2008-11-05
  • 打赏
  • 举报
回复
代码不能加颜色哦,郁闷。
看代码的时候把AClass db1=new BClass();//这句话什么意思?
当成AClass db1=new BClass();
cydp007 2008-11-05
  • 打赏
  • 举报
回复
传说中的多态.

父类引用指向子类对象..

运行时绑定.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧