zoukankan      html  css  js  c++  java
  • Java-面向对象的三大特征--多态

    1.什么是多态?

    多态是一种面向对象的编程思想

      概念:定义同一个父类型的不同引用变量,用来接收对应子类型的相关实例对象,从而通过执行方法,实现一个方法演变出不同场景的操作,称之为多态

    它产生的优点如下:

      便于代码之间的替换

      扩充起代码来简单快捷,简化编程流程

      运用多态写出的代码,运行灵活,更好的简化无效重复代码,使得代码可读性更好

    2.多态使用的前提条件

      多态是建立在有继承关系存在的基础上的

    3.多态的代码实现

    使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。

    //定义动物类接口
    public interface Animal {
        void shout();
    
    }
    
    
    
    
    /**
     * 定义小狗类实现动物类的shout方法
     * @author asus
     *
     */
     class Dog implements Animal {
         @Override
        public void shout() {
            System.out.println("小狗汪汪叫~.~");
    }
    }
    
    
    
    /**
     * 定义小狗类实现动物类的shout方法
     * @author asus
     *
     */
     class Dog implements Animal {
         @Override
        public void shout() {
            System.out.println("小狗汪汪叫~.~");
    }
    }
    
    
    
    
    /*
     * 定义一个测试类
     * 一键运行,搞定多态
     */
    public class Test {
    
        public static void main(String[] args) {
            //定义Animal的变量animal1 用来接受Dog类的实例对象
            Animal animal1 = new Dog();
            
            //定义Animal的变量animal2 用来接受Cat类的实例对象
            Animal animal2 = new Cat();
            //分别传入参数animal1和animal2,运行,见证奇迹吧
            AnimalShout(animal1);
            AnimalShout(animal2);
            System.out.println("很简单吧,多态 is just so so");
            
            
        }
        //定义静态的动物叫声方法AnimalShout(动物声音识别器)
        public static void AnimalShout(Animal animal){
            //根据传入的参数去选择调用对应的类型shout的方法
            animal.shout();
        }
    
    }

    运行一下,你就知道啦!!!

    4.多态涉及的类型转换

      向上转型:子类型转换成父类型

          特点: 

        父类声明指向子类对象

        调用的是子类重写父类的方法

        不能调用子类特有的方法(不通过继承而新增的方法)

      向下转型:父类型转换为子类型

        特点:

        多个子类型对象可赋值给同一个父类型变量,但同一个子类型变量只能接收对应子类型的父类实例

        如果类型转换错误,会抛异常,因此向下转型之前,通常需要先做一次类型判断

      类型判断

        

    对象 (或者对象引用变量)instanceof 类(或接口)

    codeing.....

        //定义静态的动物叫声方法AnimalShout(动物声音识别器)
        public static void AnimalShout(Animal animal){
            //Animal类型的animal向下转型为Cat类型并赋值给cat
            if(animal instanceof Cat){
                Cat cat = (Cat)animal;
                //根据传入的参数去选择调用对应的类型shout的方法
                animal.shout();
            }
        }

    笨鸟先飞,捷足先登,就算别人不相信你,你也要相信你自己!

  • 相关阅读:
    wordpress 的主题
    yapi api协作管理平台
    美团外卖券小程序路径过长导致插入文本消息失败的问题解决办法
    mp://XzDiXafjfvLnjvp
    supervisor 命令
    YII beego gin 框架对比
    芝麻微客-企业微信公域到私域流量运营助手
    H5跳转小程序
    PowerBI开发 第十九篇:基于Page创建Tooltip
    PowerBI开发 第十八篇:行级安全(RLS)
  • 原文地址:https://www.cnblogs.com/momo-nancy/p/15440948.html
Copyright © 2011-2022 走看看