zoukankan      html  css  js  c++  java
  • 关于多态

    Java的特性之一 多态  很多小伙伴搞不懂,问这个问题。尤其是很多初学者,觉得别扭。我总结个例子,大家看一看吧~

    看看向上转型:

    package com.toov5.Reordering;
    
    class Person{
        public void print(){
            System.out.println("吃喝拉撒");
        }
    }
    
    class SuperMan extends Person{
        public String fly(){
            return "飞起来~~~";
        }
    }
    
    public class Test {
       public static void main(String[] args) {
        Person person = new SuperMan();  //向上转型
        SuperMan pMan = (SuperMan) person;
        System.out.println(pMan.fly());
        
    }
        
        
    }

    向上转型描述的是一些公共特征。而向下描述的是子类自己特殊的定义环境。向下转型不一定是安全的啊,因为在进行向下转型之前一定要首先发生向上转型

    package com.toov5.Reordering;
    
    class Person{
        public void print(){
            System.out.println("吃喝拉撒");
        }
    }
    
    class SuperMan extends Person{
        public String fly(){
            return "飞起来~~~";
        }
    }
    
    public class Test {
       public static void main(String[] args) {
        Person person = new Person();  //不转型
    //    Person person = new SuperMan();//向上转型   
        SuperMan pMan = (SuperMan) person;
        System.out.println(pMan.fly());
        
    }
        
        
    }

    这样必然报错

     所以注意了啊。只要发生对象的向下转型之前,一定要首先发生向上转型,两个没有任何关系的实例如果要发生强制转换,那么就会出现异常。所以向下转型不一定安全呀

     转型之前要进行判断  判断某个实例是否是某个类的对象   使用 instanceof 进行

    package com.toov5.Reordering;
    
    class Person{
        public void print(){
            System.out.println("吃喝拉撒");
        }
    }
    
    class SuperMan extends Person{
        public String fly(){
            return "飞起来~~~";
        }
    }
    
    public class Test {
       public static void main(String[] args) {   
        Person person = new SuperMan();
        System.out.println(person instanceof Person);
        System.out.println(person instanceof SuperMan);
           
           
    }
        
        
    }

    结果

    如果要进行向下转型 最好要判断判断啊 老铁 别着急

    所以这么玩儿

     转型之前要规范!!

    public class Test {
       public static void main(String[] args) {   
        Person person = new SuperMan();
        if (person instanceof SuperMan) {
            SuperMan superMan =(SuperMan)person;
            System.out.println(superMan.fly());
        }
           
           
    }
        
        
    }

    结果:

  • 相关阅读:
    在 vue cli3 的项目中配置双服务,模拟 ajax 分页请求
    vue 外部字体图标使用,无须绝对路径引入办法
    json-sever 配置与应用
    使用 phpstudy 搭建本地测试环境
    自调用匿名函数(匿名闭包)解析与调用
    bootstrap-treeview 在 bootstrap 4 不兼容解决办法及使用
    SCSS 在项目中的运用
    题目1020:最小长方形(排除原点)
    题目1018:统计同成绩学生人数(数组或者map)
    大话比特币病毒
  • 原文地址:https://www.cnblogs.com/toov5/p/9844432.html
Copyright © 2011-2022 走看看