zoukankan      html  css  js  c++  java
  • 重载--面向对象的鸡肋,强类型语言的软肋

    以下言论为新手见解,如有不妥,请不吝赐教。

    重载就是一个类里面定义了几个相同名字但不同参数的函数/方法。如下:

    1 class BasketballPlayer{
    2     private String sex;
    3     private String name;
    4     public void test (String name){
    5     ......}
    6     public void test (String name,String sex){
    7     ......}
    8 }

    不过我个人感觉有些时候这个功能比较鸡肋,我还不如像下面那样写简单省事,可惜下面这种写法在JAVA里面用不了,还好在我经常用的C/C++和PHP中都支持:

    1 class BasketballPlayer{
    2     private String sex;
    3     private String name;
    4     public void test (String name,String sex="man"){
    5     ......}
    6 }

    当然重载它也有实用的时候,比如:

    int themax(int a,int b){
        return a>b? a : b;
    }
    float themax(float a, float b){
        return a>b? a : b;
    }

    不过我还是觉得这个不是一个好办法,相同的功能只是不同数据类型就要写那么多遍逻辑完全相同的东西,就是浪费体力啊,要修改还得一个个改,说不定就改漏了。我想可能弱数据类型(比如PHP)是一个更好的解决方案,它自动帮你搞定不同的数据类型了。如下:

    1 <?php
    2 function themax($a,$b){    //max是系统函数不能用了,所以起名叫themax
    3     return $a>$b ? $a : $b;
    4 }
    5 ?>

    目前流行的几门强类型语言的编译器将来会不会,敢不敢,愿不愿把“弱类型”加进去呢。这很难说,可能较长一段时间内都不会。尤其是Java更不可能,有些功能就是 别人早就已经有了,它要过了N久才有,例如switch里面要放个字符串都要到1.7版本才有。目前来说,上面那个终极解决方案也只能在如PHP,JS这 样的弱类型语言上用了,强类型还是得在复制粘贴修改的轮回中痛苦一段时间。

  • 相关阅读:
    演义江湖PC端意见汇总
    演义江湖移动端内存优化意见汇总
    BitmapData类介绍
    我的职业规划_2013-7-29
    总结调用Flash的几种方法
    Pycharm注册
    删除表
    读取url中某个值
    Pycharm常用快捷键
    pip3使用
  • 原文地址:https://www.cnblogs.com/batsing/p/4032736.html
Copyright © 2011-2022 走看看