class Chinese{
public static void print(){
System.out.println("this is 中国人");
}
}
class Guangdongren extends Chinese{
public static void print(){
System.out.println("this is 广东人 ");
}
}
class HunanRen extends Chinese{
public static void print(){
System.out.println("this is 湖南人 ");
}
}
class GuangzhouRen extends Guangdongren{
public static void print(){
System.out.println("this is 广州人 ");
}
}public class Test {
public static void main(String args[]){
Chinese c=new Chinese();//这样编译可以通过,但运行会抛出异常
HunanRen h=(HunanRen)c;// 这是因为向下转型错误,中国人不一定是湖南人,这里
//是不是可以这样理解要将c强制转换成一个HunanRen
HunanRen h=new HunanRen();//这样就没有问题,这是向上转型,
Chinese c=(Chinese)h; //湖南人一定是中国人这是是否可以理解为将h转换成Cinese
//Chinaese h=new HunanRen();然后这里又怎么理解呢???
h.print();
}
}
public static void print(){
System.out.println("this is 中国人");
}
}
class Guangdongren extends Chinese{
public static void print(){
System.out.println("this is 广东人 ");
}
}
class HunanRen extends Chinese{
public static void print(){
System.out.println("this is 湖南人 ");
}
}
class GuangzhouRen extends Guangdongren{
public static void print(){
System.out.println("this is 广州人 ");
}
}public class Test {
public static void main(String args[]){
Chinese c=new Chinese();//这样编译可以通过,但运行会抛出异常
HunanRen h=(HunanRen)c;// 这是因为向下转型错误,中国人不一定是湖南人,这里
//是不是可以这样理解要将c强制转换成一个HunanRen
HunanRen h=new HunanRen();//这样就没有问题,这是向上转型,
Chinese c=(Chinese)h; //湖南人一定是中国人这是是否可以理解为将h转换成Cinese
//Chinaese h=new HunanRen();然后这里又怎么理解呢???
h.print();
}
}
class A extends B {}
A a = new A(); //不存在转型
B b = new B(); //不存在转型
A aa = (A) b; //向下转型
B bb = a; //向上转型想想类图, 上为基类,下为子类, 向上向下就比较清楚了
public static void main(String args[]){
Chinese c=new Chinese();//这是对的,也不会抛出异常
HunanRen h=(HunanRen)c;// 这句错了
//HunanRen h=new HunanRen();//这不是向上转型
Chinese c=new HunanRen(); //这是向上转型
}
}