zoukankan      html  css  js  c++  java
  • Java多态

    多态,顾名思义就是有多种形态,什么时候有多种形态呢?继承(实现)。一个子类可以在任何时候使用父类类型表示。下面看一个例子:

    一个抽象类
    public  abstract class Person {
     
        public abstract void say();
    }

    两个实现类
    public class Jerry extends Person {
        @Override
        public void say() {
            System.out.println("我是jerry");
        }
    }
    public class Tom extends Person {
    
    
        @Override
        public void say() {
            System.out.println("我是tom");
        }
    }

    如果现在需要把Jerry和Tom放进一个集合遍历操作
    public class Client4 {
        public static void main(String[] args) {
            ArrayList<Person> people = new ArrayList<>();
            people.add(new Tom());
            people.add(new Jerry());
            for (int i = 0; i < people.size(); i++) {
    //判断实例属于哪个类  instanceof 如果属于这个类或者这个类得子类的实例 就会返回true,否则返回false
                if (people.get(i) instanceof Tom) {
                    Tom tom = (Tom) people.get(i);
                    tom.say();
                } else {
                    Jerry jerry = (Jerry) people.get(i);
                    jerry.say();
                }
            }
        }
    }


    毫无疑问这是很麻烦的,取出之后还需要判断始于哪个类再执行操作。如果person的子类太多的话 判断是一件很痛苦的事,当使用多态之后上述代码可以简化为
    public class Client4 {
        public static void main(String[] args) {
            ArrayList<Person> person = new ArrayList<>();
            person.add(new Tom());
            person.add(new Jerry());
            for (int i = 0; i < person.size(); i++) {
                person.get(i).say();
            }
        }
    }

    在这里需要注意。Peoson不是一个接口。其实这个实例只是向上转型为Person类型而已,他真实的类型为Tom,他只是在需要的时候转为超类的类型存在。在任何情况下都可以把子类转换成超类类型存在。


    不和别人一样,不复制只真正理解
  • 相关阅读:
    通完古墓丽影9
    第一次咖喱牛肉饭
    游戏模块分析总结(1)之文化内涵篇
    《海岛奇兵》战斗系统分析
    通过坑、蒙、拐、骗、偷这5点,教你如何做好市场
    UNITY3D MAC版本破解
    使用cocos2d-x 3.2下载图片资源小例子
    REST四种请求(get,delete,put,post) 收集整理 之一
    Android SDK无法更新解决方法
    (mac)Android Studio安装以及Fetching android sdk component information超时的解决方案
  • 原文地址:https://www.cnblogs.com/Vinlen/p/12750771.html
Copyright © 2011-2022 走看看