JAVA-多态

35 篇文章 0 订阅

对多态的理解

有了向上转型,动态绑定和方法重写的了解之后,才能理解多态的形式
首先看看通过使用动态绑定的形式使用不同类中的同名方法

public class muchState {
    public static void main(String[] args) {
        Shape s1 = new Cycle();
        Shape s2 = new Rect();
        Shape s3 = new triangle();
        drawMap(s1);
        drawMap(s2);
        drawMap(s3);
    }
    public static void drawMap(Shape shape){
        shape.draw();
    }
}
///分割线
class Shape{
    public void draw(){
    //为重写准备,不写任何内容
    }

}
class Cycle extends Shape{
    @Override
    public void draw() {
        System.out.println("⚪");
    }
}
class Rect extends Shape{
    @Override
    public void draw() {
        System.out.println("⬜");
    }
}
class triangle extends Shape{
    @Override
    public void draw() {
        System.out.println("🔺");
    }
}

在这里插入图片描述
在代码分割线的上方表示类的调用者,下方表示类的定义
当类的调用者使用drawMap这个方法时,参数类型为Shape,此时在方法的内部并不指导当前shape指向的是哪个子类的实例,因此shape调用draw方法时会出现多种不同的形态,此种行为就称为多态
顾名思义:多态就是一个引用出现多种不同的形态,

public static void drawMap2(){
        Shape[] shapes={new Cycle(),new Rect(),new triangle()};
        for (Shape shape:shapes) {
            shape.draw();
        }
        ///这个函数利用数组和多态的形式更好的实现了函数的功能
        //首先,数组为同类元素的集合,在Shape[]数组中可以存储多个Shape类,
        //通过利用foreach,设置引用指针访问每个Shape的draw,来打印
        
    }

上述代码如果不使用多态,就需要书写太多的if-else语句,增加了代码的圈复杂度
多态的优点:
1.类的调用者使用成本进一步降低
(1)封装能够让使用者不需要知道类的实现细节
(2)多态能让的调用者连这个类的类型都不必知道,只需要知道这个对象具有某个方法即可
2.能够降低代码的圈复杂度
3.可扩展能力更强使用成本大大降低

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值