191/192对象的向下转型和用instanceof关键字进行类型判断

对象的向下转型

 

 

 

//向下转型进行“还原”动作

Cat cat = (cat) animal;

cat.catchMouse(); // 猫抓老鼠

用instanceof关键字进行类型判断

父类

public class Fu {
    public void eat(){
        System.out.println("吃鱼");
    }
}

子类

    public class Zi extends Fu{
        public void eat(){
            System.out.println("吃鱼");
        }
        public void catchMouse(){
            System.out.println("看门");
        }
    }


public class dog extends Fu{
    public void eat(){
        System.out.println("SHIT");
    }
    public void watchHouse(){
        System.out.println("看家");
    }
}

复制代码

测试类

public class text {
    public static void main(String[] args) {
        Fu fz = new Zi();
        fz.eat();

        if (fz instanceof dog) {
            dog dog = (dog) fz;
            dog.watchHouse();
         }

        if (fz instanceof Zi) {
            Zi zi = (Zi) fz;
            zi.catchMouse();
        }
        giveMeAPet(new dog());
}

    public static void giveMeAPet (Fu fu) {
        if (fu instanceof dog) {
            dog g = (dog) fu;
            g.watchHouse();
        }
        if ( fu instanceof Zi){
            Zi zi = (Zi) fu;
            zi.catchMouse();
    }
}

 

packagecom.zyh.test;public classPerson {public voidplay(){

System.out.println("Person play...");

}

}class Boy extendsPerson{public voidplay(){

System.out.println("boy play...");

}public voidrun(){

System.out.println("run play...");

}

}classRunMain{public static voidmain(String[] args){

Person b= new Boy();//向上转型

b.play();

System.out.println("-------------------------");

Boy b1=(Boy)b;//向下转型

b1.play();

b1.run();

}

}

结果:

 


 

 

 

public class Fu {
    public void eat(){
        System.out.println("吃小鱼干");
    }
}



    public class Zi extends Fu{
        public void eat(){
            System.out.println("吃罐头");
        }
        public void catchMouse(){
            System.out.println("看大门");
        }
    }


public class dog extends Fu{
    public void eat(){
        System.out.println("SHIT");
    }
    public void watchHouse(){
        System.out.println("看大门");
    }
}


public class text {
    public static void main(String[] args) {
        Fu fz = new Zi();
        fz.eat();

        if (fz instanceof dog) {
            dog dog = (dog) fz;
            dog.watchHouse();
         }

        if (fz instanceof Zi) {
            Zi zi = (Zi) fz;
            zi.catchMouse();
        }
        giveMeAPet(new dog());
}

    public static void giveMeAPet (Fu fu) {
        if (fu instanceof dog) {
            dog g = (dog) fu;
            g.watchHouse();
        }
        if ( fu instanceof Zi){
            Zi zi = (Zi) fu;
            zi.catchMouse();
    }
}

 

posted @ 2022-07-05 11:09  ja不会va  阅读(25)  评论(0)    收藏  举报