java中,A a=new B();a表示的是A的对象还是B的对象?为什么要这么表示?如果表示成A a=new A();又会怎样?

初学java,请各位大侠指教。... 初学java,请各位大侠指教。 展开
 我来答
freish
推荐于2016-03-09 · TA获得超过2878个赞
知道大有可为答主
回答量:3153
采纳率:0%
帮助的人:2695万
展开全部
从A a=new B();看,A是B的直接或间接父类,这句栈中是的a是A的引用,堆中的对象是B。

为什么这么写,一个好的编程习惯有几个原则,比如:针对接口编程,而不要针对实现类编程

你这个简单的代码A a=new B();和A a=new A();都是一样的,但是如果是个大的项目,可能并不是直接new,而是通过工厂方法,工厂方法如果返回值是一个具体的对象的话,那么如果一旦工厂方法改变就要改使用工厂方法的类,牵一发而动全身,还可能引进新的bug,而是用超类型,只需要改工厂方法即可,使用工厂方法的地方不需要改
百度网友035ac20
推荐于2018-04-12 · 超过24用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:0
展开全部
A a1 = new B(); a1为B类的对象
A a2 = new A(); a2为A类的对象

例如:public class A
{
public String a()
{
return "A类";
}
}

class B extends A{
public String a()
{
return "B类";
}
}

A a1 = new B();
System.out.println(a1.a());//输出B类中的a()
A a2 = new A();
System.out.println(a2.a());//输出A类中的a()
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loveweizaiwan
2009-10-05 · TA获得超过425个赞
知道小有建树答主
回答量:460
采纳率:0%
帮助的人:272万
展开全部
a表示的是B的对象。new B()是以父类A的形式new一个对象出来。

为什么要这么表示?如果表示成A a=new A();又会怎样?
这就要牵扯Java里的多态了,你将Java多态看懂这个就很容易理解了。
还有什么不理解可以直接百度Hi我.....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友03ab49e71
2009-10-05
知道答主
回答量:19
采纳率:0%
帮助的人:8.3万
展开全部
A a=new B();
对象是B的对象,B应该是A的子类或者实现了A接口的类,使用a变量时,对外表现出来的是A,但对象是B。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式