栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基础————多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java基础————多态

多态的作用就是来消除类型之间的耦合的。多态方法调用允许一种类型表现
出与其他相似类型之间的区别,只要它们都是从同一基类导出的。

举个有关乐器的例子,如果按照以前的风格编写,就会呈现下面这种情况:

public class music {
    public static void tune(Stringed s){
        s.play(Note.B_FLAT);
    }
    public static void tune(Brass b){
        b.play(Note.C_SHARP);
    }

    public static void main(String[] args) {
        Stringed stringed = new Stringed();
        Brass brass = new Brass();
        tune(stringed);
        tune(brass);
    }
}
enum Note{
    MIDDLE_C,C_SHARP,B_FLAT;
}
class instrument{
    public void play(Note n){
        System.out.println("instrument.play()");
    }
}
class Stringed extends instrument{
    @Override
    public void play(Note n) {
        System.out.println("Stringed.play()"+n);
    }
}
class Brass extends instrument{
    @Override
    public void play(Note n) {
        System.out.println("Brass.play()"+n);
    }
}

按照这个方法写的话,就会存在很多弊端,如果随着跟多乐器的加入,tune()就会越来越多,非常不利于管理,此外,如果我们忘记重载某个方法,编译器不会返回任何错误信息,这样关于类型的整个处理过程就会变得难以操作。

什么是多态?

通俗易懂的说,就是对于同一行为,不同的子类对象有不同的表现形式

多态存在的3个条件

1、继承
2、重写
3、父类引用指向子类对象

举个简单的例子:
在玩英雄联盟的时候,当我们按下q

对于亚索,就是斩钢闪对于提莫,就是致盲吹箭对于剑圣,就是阿尔法突袭

同一个事件发生在不同的对象上就会产生不同的结果

那么我们就可以将上面的例子进行优化:

package com.piao.test;

public class music {
    public static void tune(instrument i,Note n){
        i.play(n);
    }
    public static void main(String[] args) {
        Stringed stringed = new Stringed();
        Brass brass = new Brass();
        tune(stringed,Note.C_SHARP);
        tune(brass,Note.B_FLAT);
    }
}
enum Note{
    MIDDLE_C,C_SHARP,B_FLAT;
}
class instrument{
    public void play(Note n){
        System.out.println("instrument.play()");
    }
}
class Stringed extends instrument{
    @Override
    public void play(Note n) {
        System.out.println("Stringed.play()"+n);
    }
}
class Brass extends instrument{
    @Override
    public void play(Note n) {
        System.out.println("Brass.play()"+n);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763947.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号