请教各位朋友
A是B的父类那么
A aa = new B()
与(A)new B()
是一样的吗?

解决方案 »

  1.   

    不是一样的,前者只能调用A中的和B覆盖A的变量与方法,后者则没有这个限制
      

  2.   

    truewill(无处不在) ( ) 信誉:100  2006-05-18 21:19:00  得分: 0  
     
     
       是一样的,编译器默认转换
      ----------
    同意
    我试了一下 都是一样的
    A aa = new B()
    与A aa=(A)new B()一样 
      

  3.   

    谢谢各位 我也做的实验觉得2个是一样的
    但还有个问题就是
    象类似A aa = new B()
    与(A)new B()
    这样写代码 
    一般都有什么作用,也就是在什么地方能用到这样写代码
    与其这样写”aa.方法()“或“((A)new B()).方法()”
    不如直用子类的方法“new B().方法()”
    为什么要这样写?
      

  4.   

    多态。A aa = new B()中表明B是A的子类或者B实现了A接口,假如应用程序只想开放一个对外的接口,而不想告诉是如何实现的就用如此方法。可以说是一个封装吧。
      

  5.   

    将子类对象赋值给父类的引用,此目的就是实现多态性。
    public class Test { public static void main(String[] args) {
    A a = new B();
    a.f();                  //多态性,调用的是子类中的f()方法
    ((A) new B()).f();      //多态性,调用的是子类中的f()方法
    }
    }class A {
    public void f() {
    System.out.println("aaa");
    }
    }class B extends A {
            //重写基类中的f()方法:
    public void f() {
    System.out.println("bbb");
    }
    }
    输出结果:
    bbb
    bbb
      

  6.   

    如果:A a = new B();
    A b = new A();a和b是不是一样啊 ??
      

  7.   

    这样写”aa.方法()“或“((A)new B()).方法()”
    不如直用子类的方法“new B().方法()”
    为什么要这样写?
    ------------------
    没有这样写的:“((A)new B()).方法()”一般都是
    [Object or Interface] obj = getInst();
    ((A)obj).method();
      

  8.   

    这个问题没啥意义呀。我们平时用 A aa=new B()就行了
      

  9.   

    为什么我这里写(A)new B()就会出现编译错误呢。