代码如下:
Class A
Class B extends A
有没有这种写法:
B b=(B) new A()

解决方案 »

  1.   


    为什么不这样写呢?
    B b = new B();
      

  2.   

    一般是这样写A a=new B();
      

  3.   

    不可以,只有A是B的上泛型对象时,才可以对A进行下泛型操作,即强制类型转换
      

  4.   


    A类是父类
    B类是继承自A类的子类
    根据is-a的原则,任何父类出现的地方都可以用子类替换
    上面的写法已经违反了这种原则...
    会出BUG的...
      

  5.   

    不可以的,子类是不能构造父类的,但父类可以构造子类。
    A b=new B();这样就可以的
      

  6.   

    不可以!
    刚写了个例子,楼主可以看看 class Foo{
        public int a =3;
        static public void addOne(){
            System.out.println("f");
        }
        public void addFive(){
            a+=5;
            System.out.println("f");
        }
    }
    class Bar extends Foo{
        public int a =8;
        static public void addOne(){         
            System.out.println("b");
        }
        public void addFive(){
            this.a += 5;
            System.out.println("b");
        }
    }
    public class Pass { public static void main(String[] args) {
     Foo f =new Bar();
     //Bar b=(Bar)new Foo();   //Error
     f.addOne();
     f.addFive();
     System.out.println(f.a);
     System.out.println(((Bar)f).a);

    }
    }
    /* Output:
     * f
     * b
     * 3
     * 13
     */
      

  7.   

    不可以那样的,昨天刚看有人问(B)new A();为什么报类型转换的错误。
    java中一般写成A a = new B();的比较多,这是多态的体现...
      

  8.   

    画蛇添足
    B b=new A(); 正解