Java中A a;和B b=new B();的区别

如果A是抽象类,抽象类不是不能创建对象吗,那a又是什么?有点乱!求大神。。。... 如果A是抽象类,抽象类不是不能创建对象吗,那a又是什么?有点乱!求大神。。。 展开
 我来答
XoriieInpottn
2014-08-22 · TA获得超过494个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:155万
展开全部
A a;并没有创建对象,只是声明了一个A类型的引用,但此时并没有引用任何A的实例。

而B b = new B();则既声明了类型为B的引用,有创建了B的实例,并且将b引用了B的实例对象。

如果A是抽象类,那么A a = new A();就不可以,主要是后面的new A();不允许,因为里面包含了抽象方法。
追问
如果A是抽象类
class xx{
A a;
public xx(A a){
this.a=a;

}
public void yy() {
a.i();
}
}
其中this.a=a传递的是值还是引用
追答
传引用,就是让this.a引用传入的那个对象
Java中除了int呀float呀等基本类型是传值,对象一律传引用
对于对象类型,没有复制传参,要复制对象需要手动clone()
woshidaniel
2015-09-14 · TA获得超过9240个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:957万
展开全部

区别:

1、前者是类A,后者是类B;

2、前者是变量a,后者是变量b;

3、前者没有实例化,后者进行了实例化;

解释:

1、A a是定义一个类变量,类名是A,变量名是a

2、B b=new B();

可以看做

B b;//定义一个类变量,类名B ,变量名b
b = new B();//实例化B,并赋值给b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风御卿
2014-08-22 · TA获得超过178个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:73.8万
展开全部
抽象类是不能创建实例,但是可以声明一个指向子类实例的引用,这个是向上转型的内容你可以搜一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白衬衫啊啊
2014-08-22 · TA获得超过101个赞
知道答主
回答量:89
采纳率:0%
帮助的人:39.2万
展开全部
可以被实例化
抽象类的特点:
1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2、允许(但不要求)抽象类包含抽象成员。 3、抽象类不能被密封。 当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写哪些抽象成员。在下边的示例中: abstract class A{ public abstract void F();} abstract class B: A{ public void G() {}} class C: B{ public override void F() { // actual implementation of F }} 抽象类 A 引入抽象方法 F。类 B 引入另一个方法 G,但由于它不提供 F 的实现,B 也必须声明为抽象类。类 C 重写 F,并提供一个具体实现。由于 C 中没有了抽象成员,因此可以(但并非必须)将 C 声明为非抽象类。抽象类里面其实可以声明普通的方法的,既然可以声明那就肯定可以用,你说呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eduel
2014-08-22 · 超过14用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:13.5万
展开全部
A a;只是申明了一个对象的引用,还没有指向任何对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式