对于Java中重载的思考

原创 2012年03月23日 15:35:50

本文是对于Java中方法重载一点个人理解。

重载的出现是有其现实意义的:在许多情况下实质上不同的操作在表现上是相同的。正是因为实质上的操作不相同,决定了方法的具体实现不同,这就需要编写不同的代码,但表现上是相同的,又导致了站在方法具体的实现之外来看,这些方法具有相同的意义,可以用一个名字来表示。比如做加法,具体就方法实现而言,两个整型数相加与两个实型数相加是不同的,需要定义不同类型的变量,但从功能上而言他们都是加法,所实现的都是两个数相加,我们在生活中习惯将他们当做是没有区别的。对于Java这种面相对象的语言,他希望程序员能以人的思考方式来编程,而不是以计算机的思考方式,这就奠定了重载出现的必要性。我们可以将生活中认为是相同的功能在用方法实现时命以相同的名字,只在参数列表上加以区别。对于在参数列表上有所区别也是很自然的,既然这是要具体实现不同的功能,所用来操作的参数的类型或者个数就一定会有区别,即使遇到了参数类型与数目一致的情况,也可以通过调整参数顺序来实现参数列表相区别。

对于构造方法而言,重载能够更加符合人的思维方式。构造方法是用来创建对象的,对象具有属性与方法这两个成员。属性对于不同的对象是不同的,有几个对象就会对应的有属于不同对象的几组属性,在内存中分配几组不同的内存单元来存储,这些属性之间是不会相互影响的。有了这样的认识之后,我们再来想,我们之所以定义同一个类的不同对象是因为在实际上这些对象之间是不同的,这些对象具有相同的抽象属性与功能,所以这些对象属于同一个类,但是具体而言这些对象却具有不同的静态描述与动态行为。比如说书本,所有的书都有作者、ISBN号、价格、出版日期、版次、出版社、购买日期、所有者以及使用方式等属性,也都具有买、卖、翻阅以及注释的方法,但每一本书都具有各自不同的静态描述。比如书名不同,或者书名相同但作者不同,也可能书名、作者相同但出版社不同,最起码,同一个人或许有好几本看起来一模一样的书,但终究这些具体的对象总有着不同的描述,至少所处的地理位置不同。这些具体的对象在现实生活中是有我们生产制造出来的,那么在Java中,形形色色的对象是通过new关键字加上构造函数“制造”出来的,当我们new不同的对象时,这些对象理应能够(是能够)用不同的构造方法来“制造”。我们可以通过构造函数来赋予不同的对象不同的初始属性,为了实现这一点,既能够使用同一个构造函数传递不同的参数值,也可以根本上就使用不同的构造函数。从这个角度上看,构造函数的重载是面向对象必不可少的。

从这样的角度来看,重载对于面向对象来说是非常必要的。这样来理解重载,就能够避免死记硬背。

面向对象的突破就是在于编程思想上我们可以按照自己的思维方式来写程序,从思想上的转变来考虑Java中的语法规定与特点,能够帮助我们更好地学习Java。

版权声明:你喜欢,就转载。我爱开源,喜欢分享,只怕自己分享的不够多。

相关文章推荐

java中重载重写的一些思考

java 重载与重写的区别

java中重载与重写的区别

  • 2013年09月10日 15:58
  • 24KB
  • 下载

java中重载与重写的区别

java中重载与重写的区别   首先我们来讲讲:重载(Overloading)     (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个...

Java中重载和重写总结

  • 2008年10月21日 17:13
  • 30KB
  • 下载

Java没有运算符重载?

---------- android培训、java培训、期待与您交流! ---------- 在程序中有时候需要使用重载运算符来做一些对象之间的运算,比如复数的计算,还有字符串的运算 例如:把字符串...
  • typ0520
  • typ0520
  • 2012年09月12日 23:53
  • 4479

Java方法重载

  • 2012年02月11日 21:00
  • 19KB
  • 下载

java中重载与重写

  • 2015年11月10日 14:55
  • 223B
  • 下载

java中方法重载和重写的区别和定义

重载:一个类中有一个方法A,你又在这个类中创建了一个方法B,方法B的名字和A一样,返回值类型也一样,但是参数的类型或个数不同,此时B重载了A。 例如: public class TestClass{ ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对于Java中重载的思考
举报原因:
原因补充:

(最多只允许输入30个字)