首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

类型信息的有关问题

2012-05-28 
类型信息的问题class Person{public void say(){System.out.println(Person)}}class Student extends P

类型信息的问题
class Person{
public void say(){
System.out.println("Person");
}
}

class Student extends Person{
@Override
public void say(){
System.out.println("Student");
}
}
public class Pet {

public static void main(String[] args) {

Person p = new Person();
if(p instanceof Person){
((Student)p).say();
}
}

}
请问为什么会抛出ClassCastException


[解决办法]
class Person {
public void say() {
System.out.println("Person");
}
}

class Student extends Person {
@Override
public void say() {
System.out.println("Student");
}
}

public class Pet {

public static void main(String[] args) {

Person p = new Student();
if (p instanceof Person) {
((Student) p).say();
}
}

}
[解决办法]
Person p = new Person();
if(p instanceof Person){
((Student)p).say();
}
==>

Person p = new Student();
if(p instanceof Student){
((Student)p).say();
}


[解决办法]
因为是声明的变量是子类型,你强转成父类型,编译可以通过,但是实际运行的时候不行,像楼上两位这么改即可。

热点排行