这样写当然不可以了。
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
}
}
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
}
}
不一定能够转换成String对象
但是一个String对象却一定可以
当成是Object对象来用.
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 base = (Base) user;//上
user = (User) base;//下可以说公牛是牛,而不可说牛是公牛。
所以只有声明的时候:
//base本身是一个子类的对象,通过这样向上转换成基类对象
Base base=new User();
//这时base就可以向下转换成User类对象(因为base本身就是一个User类对象)
User user=(User) base;