java向上转型妙用

Java向上转型的妙用

下面这段代码摘自《java编程思想》,内容稍有修改

    class Sharp{
        public void erase(){
            ...
        };
        public void draw(){
            ...
        };
    }
    class Circle extends Sharp{
        public void erase(){
            System.out.println("扩大十倍");
        };
        public void draw(){
            System.out.println("画个圆");
        };
        ...
    }
    class Triangle extends Sharp{
        public void erase(){
            System.out.println("缩小十倍");
        };
        public void draw(){
            System.out.println("画个三角");
        };
        ...
    }
    void doSomething(Sharp sharp){
        sharp.erase();
        sharp.draw();
    }

如此,就可以这样使用doSomething(Sharp sharp):

    Circle circle = new Circle();
    Triangle triangle = new Triangle();
    doSomething(circle);
    doSomething(triangle);

而,如果我们不使用向上转型,那么我们在编写doSomething的时候就需要做个判断,判断传进来的是cirlcle还是triangle,然后再执行相应的方法。
条件判断在代码编写中司空见惯,经常就是条件反射式的就用上了,可能就让代码变得杂乱不堪。其实如果去探究java的精髓,我们是可以写出更优雅的代码的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值