public class Ye {
String name = "爷爷";
public void method() {
System.out.println("爷爷类");
}
}
public class Fu extends Ye{
String name = "父亲";
public void method() {
System.out.println("父亲类");
}
}
public class Zi extends Fu{
String name = "儿子";
public void method() {
System.out.println("儿子类");
}
}
public class Test {
public static void main(String[] args) {
Ye ye1 = new Fu(); //本身是Fu,当做Ye使用
Fu fu = (Fu) ye1;//本身是Fu,还原成Fu
Ye ye2 = new Fu();
//本身是Fu,还原成Zi,报错类转换异常
//Exception in thread "main" java.lang.ClassCastException:
//cn.itcast.day10.HomeWork04.Fu cannot be cast to cn.itcast.day10.HomeWork04.Zi
//Zi zi=(Zi)ye2;
Ye ye3=new Zi();
Zi zi=(Zi)ye3;
Fu fu2=(Fu)ye3;
}
}
向下转型注意事项:
最多只能向下转成本身或其父类,不能转成其他类,即使是子类也不行。