这样写当然不可以了。
class Base {
  private String bh;
  private String name;
  public String getName() {
    return name;
  }
  public void setBh(String bh) {
    this.bh = bh;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getBh() {
    return bh;
  }
  public Base() {
  }
}public class User extends Base {
  public User() {
    super();
  }
  public static void main(String[] args) {
    Base base=new User();    //向上转型成Base
    User user=(User) base;   //向下转型成User
  }
}

解决方案 »

  1.   

    就像是这样,一个Object对象
    不一定能够转换成String对象
    但是一个String对象却一定可以
    当成是Object对象来用.
      

  2.   

    public class Base {
    private String bh;
    private String name;
    public String getName() {
    return name;
    }
    public void setBh(String bh) {
    this.bh = bh;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getBh() {
    return bh;
    }
    public Base() {
    }
    }public class User extends Base {
    public User() {
    super();
    }
    public static void main(String[] args) {
    Base base=new User(); //这样子就可以了
     
    }
    }
      

  3.   

    User user = new User();
    Base base = (Base) user;//上    
    user = (User) base;//下可以说公牛是牛,而不可说牛是公牛。
      

  4.   

    就是说本身是父类的对象,是不可以转换成子类的对象。因为子类往往自己又定义很多新的方法和属性,如果可以这样转,那不是父类的对象就获得了子类的新方法和属性,那怎么可能。
    所以只有声明的时候:
    //base本身是一个子类的对象,通过这样向上转换成基类对象
    Base base=new User(); 
    //这时base就可以向下转换成User类对象(因为base本身就是一个User类对象)
    User user=(User) base;