/*
* 创建日期 2005-8-3
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*//**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/class Chinaese{
public static void print1(){
System.out.println("this is 中国人");
}
}
class Guangdongren extends Chinaese{
public static void print2(){
System.out.println("this is 广东人 ");
}
}
class HunanRen extends Chinaese{
public static void print3(){
System.out.println("this is 湖南人 ");
}
}
class GuangzhouRen extends Guangdongren{
public static void print4(){
System.out.println("this is 广州人 ");
}
}public class Test {
public static void main(String args[]){
Chinaese hunan=new HunanRen();
Object o=new HunanRen();
hunan.print1();
}
}
* 创建日期 2005-8-3
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*//**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/class Chinaese{
public static void print1(){
System.out.println("this is 中国人");
}
}
class Guangdongren extends Chinaese{
public static void print2(){
System.out.println("this is 广东人 ");
}
}
class HunanRen extends Chinaese{
public static void print3(){
System.out.println("this is 湖南人 ");
}
}
class GuangzhouRen extends Guangdongren{
public static void print4(){
System.out.println("this is 广州人 ");
}
}public class Test {
public static void main(String args[]){
Chinaese hunan=new HunanRen();
Object o=new HunanRen();
hunan.print1();
}
}
Object o=new HunanRen(); 这个也是向上转型,因为object是所有类的基类!
这样的话就是向下转型! (HunanRen)o.print3();但是前提是你必须有Object o=new HunanRen();这一句,因为向下转型是有风险的!
Chinaese hunan=new HunanRen();
Object o=new HunanRen();
一个 HunanRen 他继承自 Chinese , 所以一个指向了 Chinese 的句柄是可以指向 HunanRen 的实例,但是这个时候 hunan 自动向上溯型 为 Chinese 类型的, 运行时的具体实例的类型只有运行时才知道,你如果让他 Guangdong gd = (Guangdong) hunan ; 是会出错的,因为本身 hunan 不是 Guangdong 的实例。 Guangdong gd = new Guangdong(); HunanRen hn = (HunanRen) gd ; 也一样出错,总之, 子类型 上溯 成父类型是自动的,但是下溯 却要 明确 cast ,因为他还可能是父类型的其他派生类型(就像兄弟一样)。
System.out.print(xxxxxxx);//相应的输出
}
这样重写printString()方法。会让你感觉更加理解深刻
Object o=new HunanRen(); 这个也是向上转型,因为object是所有类的基类!
这样的话就是向下转型! (HunanRen)o.print3();但是前提是你必须有Object o=new HunanRen();这一句,因为向下转型是有风险的!