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

小弟我写的关于继承的一个小练习,不清楚问什么出错,难道instanceof不该这么用吗

2013-10-17 
我写的关于继承的一个小练习,不清楚问什么出错,难道instanceof不该这么用吗?求教哪里用法不对啊[解决办法]

我写的关于继承的一个小练习,不清楚问什么出错,难道instanceof不该这么用吗?



求教哪里用法不对啊 

[解决办法]
public class ExtendsDemo {
    public static void main(String[] args){
        Student s = new Student("张三",23);
        Teacher t = new Teacher("李四",35);
        Print(s);
        Print(t);
    }
    private static void Print(Person p){
        if(p instanceof Student){
            System.out.print(p.name+" "+p.age+" "+p.eat()+" ");
             Student student =(Student) p;
            student.learn();
        }
        else if(p instanceof Teacher){
            System.out.print(p.name+" "+p.age+" "+p.eat()+" ");
             Teacher teacher=(Teacher) p;
             teacher.teach();
        }
        else{ System.out.println("error");}
    }
}
class Person{
    public String name;
    public int age;
    public String eat(){
        return "吃饭";
    }
}
class Student extends Person{
    Student(String name,int age){
        this.name = name;
        this.age = age;
    }
    public void learn(){
        System.out.println("学习");


    }
}
class Teacher extends Person{
    Teacher(String name,int age){
        this.name = name;
        this.age = age;
    }
    public void teach(){
        System.out.println("教课");
    }
}


[解决办法]
要向下转型把。((Student)p).learn();  (Teacher) p.teach();
[解决办法]
你父类中没有定义那么方法,当然访问不到了,把子类中的方法提到父类中去
[解决办法]
需要把p强制转换成Student或者Teacher类型啊

[解决办法]
引用:
我记得好像父类不能转换成子类!

可以的,不过前提是这个父类是由子类转成的父类,比如他这个
Person(父类)是由Student和Teacher(子类)转的,所以可以转成父类

热点排行