继承和多态画图形

package demo1;

/**
 * @Author: 黑木~
 * @DATE: 2022/11/15 13:18
 * 用继承和多态画图形
 */
class Shape{
    public String name;
    public void draw() {
        System.out.println("画图形")/*此处并不能满足我要画什么图形,So用继承满足*/;
    }
}
class Cycle extends Shape{
    @Override
    public void draw() {
        System.out.println(name+"画~○~");
    }
}
class Flower extends Shape{
    @Override
    public void draw() {
        System.out.println(name+"画~❀~");
    }
}
public class TestDemo1 {
    public static void drawMap(Shape shape) {/*一个引用就引用了三个子类对象*/
        shape.draw();
    }
    public static void main(String[] args) {
        Shape shape1 = new Shape();
        Shape shape2 = new Cycle();
        Shape shape3 = new Flower();
        drawMap(shape1);
        drawMap(shape2);
        drawMap(shape3);
    }

}

当我不是用多态画图形的时候我就要遍历这个数组一步一步判断来带调用对应的方法,然而用前面的那个多态的话只需要将相应的对象的引用放在写好的函数里面就可以了

Example:

package demo1;

/**
 * @Author: 黑木~
 * @DATE: 2022/11/15 17:39
 * 不使用多态画图形
 */
class Shape{
    public String name;
    public void draw() {
        System.out.println("画图形")/*此处并不能满足我要画什么图形,So用继承满足*/;
    }
}
class Cycle extends Shape{
    @Override
    public void draw() {
        System.out.println(name+"画~○~");
    }
}
class Flower extends Shape{
    @Override
    public void draw() {
        System.out.println(name+"画~❀~");
    }
}
public class TestDemo2 {
    /*public static void drawMap(Shape shape) {
        shape.draw();
    }*/
    public static void main(String[] args) {
        Cycle cycle = new Cycle();
        cycle.name="haha";
        Flower flower = new Flower();
        flower.name= "hehe";
        String[] shapes={"cycle","flower"};
        /*接下来怎么画图形--遍历这个数组*/
        for (String s: shapes) {
            if (s.equals("cycle")){
                cycle.draw();
            }else {
                flower.draw();
            }

        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银海富月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值