【第22期】观点:IT 行业加班,到底有没有价值?

对于Java中重载的思考

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

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

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

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

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

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

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

相关文章推荐

Java面向对象编程之重载(overload)和重写(override)

Java重写(override)与重载(overload)重写(override)重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在...

java中重载重写的一些思考

java 重载与重写的区别

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

JavaSE入门学习16:Java面向对象之重写(Override)和重载(Overload)

一重写(Override)        如果子类对继承父类的方法不满意,是可以重写父类继承的方法的。重写是子类对父类的允许访问的方法的实现 过程进行重新编写。返回值和形参都不能改变。即外壳不变,核心...

0810-Java 重写(Override)与重载(Overload)

Java 重写(Override)与重载(Overload) 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核...

Java学习之路--重写与重载

重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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