不可以,会抛出classCastException类型转换异常。
这涉及到了向上转型和向下转型。
当一个父类引用指向子类对象的时候,子类对象向上转型成了父类类型。向上转型是自动转换的。这就是继承间的多态体现。
当子类引用指向父类对象时,就是向下转型,需要强制转换。
举例:- class Person
- {
- public String toString()
- {
- return "person";
- }
- }
- class Child extends Person
- {
- public String toString()
- {
- return "child";
- }
- }
- public class MyTest
- {
- public static void main(String[] args)
- {
- Person p=new Person();
- Child c=new Child();
- //向上转型,自动转型
- p=c;
- //向下转型,强制转换。在这里判断如果p是Child类型就可以转换
- if(p instanceof Child)
- {
- c=(Child)p;
- System.out.println("p是Child类型");
- }
- else
- System.out.println("p不是Child类型");
- System.out.println(p);
- //System.out.println(c);
- }
- }
复制代码 希望你能明白 |