zoukankan      html  css  js  c++  java
  • instanceof有什么用?什么时候用

    复习Java基础的时候在理解Java多态这篇博客上看到的(作者在博客园的地址是宜春,他的Java基础系列的文章我个人觉得是写得非常详细的)。

    下面直接就是复制作者原文的代码了。

    package Demo;
    
    class  Matcher{
        public void eat(){
            System.out.println("想吃烤山猪?");
        }
    
    }
    
    class Boy extends Matcher {
        public void eatKaoYang(){
            System.out.println("妈妈,我想吃烤山猪");
        }
    }
    
    class Girl extends Matcher {
        public void eatKaoYang(){
            System.out.println("妈妈,我想吃烤山猪2333");
        }
    }
    
    public class Test {
        public static void main(String[] args) {
    
            Matcher g = new Girl();//向上转型编译通过
    
            Boy x = (Boy)g;//向下转型
    
            x.eatKaoYang();//编译通过,但运行报ClassCastException
    
        }
        
     运行结果:  运行报ClassCastException
    
    }
    ————————————————
    版权声明:本文为CSDN博主「宜春」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_44543508/article/details/102409146

    编辑通过:可以简单理解为编写代码时,IDEA没有出现红线报错。

    运行时报错:启动main方法测试效果时,IDEA报错XXXException

    使用instanceof解决上述问题:

    package Demo;
    
    class  Matcher{
        public void eat(){
            System.out.println("想吃烤山药?");
        }
    
    }
    
    class Boy extends Matcher {
        public void eatKaoYang(){
            System.out.println("Boy:妈妈,我想吃烤羊");
        }
    }
    
    class Girl extends Matcher {
        public void eatKaoYang(){
            System.out.println("Girl:妈妈,我想吃烤全羊2333");
        }
    }
    
    public class Test {
        public static void main(String[] args) {
    
            Matcher g = new Girl();//向上转型
    
            if(g instanceof Girl){
                Girl x = (Girl)g;//向下转型
                x.eatKaoYang();  //=====================调用Girl的eatKaoYang()方法
            }else if(g instanceof Boy){ //不执行
                Boy x = (Boy)g;//向下转型
                x.eatKaoYang();  //=====================调用Boy的eatKaoYang()方法
            }
        }
    }
    
    运行结果: Girl:妈妈,我想吃烤全羊2333
    ————————————————
    版权声明:本文为CSDN博主「宜春」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_44543508/article/details/102409146
  • 相关阅读:
    第四次实验报告
    第三次实验报告
    第五章 循环结构课后反思
    第二次实验报告
    5-508寝室第六小组课后习题作业
    第一次实验报告
    第九章 构造数据类型实验
    第八章 指针实验
    第七章 数组实验
    第六章 函数和宏定义实验(2)
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/12687646.html
Copyright © 2011-2022 走看看