首页 > 代码库 > 重载--面向对象的鸡肋,强类型语言的软肋
重载--面向对象的鸡肋,强类型语言的软肋
以下言论为新手见解,如有不妥,请不吝赐教。
重载就是一个类里面定义了几个相同名字但不同参数的函数/方法。如下:
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 <?php2 function themax($a,$b){ //max是系统函数不能用了,所以起名叫themax3 return $a>$b ? $a : $b;4 }5 ?>
目前流行的几门强类型语言的编译器将来会不会,敢不敢,愿不愿把“弱类型”加进去呢。这很难说,可能较长一段时间内都不会。尤其是Java更不可能,有些功能就是 别人早就已经有了,它要过了N久才有,例如switch里面要放个字符串都要到1.7版本才有。目前来说,上面那个终极解决方案也只能在如PHP,JS这 样的弱类型语言上用了,强类型还是得在复制粘贴修改的轮回中痛苦一段时间。
重载--面向对象的鸡肋,强类型语言的软肋
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。