java中的重载与多态
3个回答
展开全部
首先。从你上面说的是基本一样的。那么可以看出,重载和多态的概念你还没有搞清楚。
重载我们从案例中可以看出是方法的类型一致,而方法的参数类型不同。可以有1个或2个以上的重载指向同一实例。
而多态、是几个子类的对象可以访问同一个方法。对象的指向的实例不同。可以指向多个实例来实现多态
重载我们从案例中可以看出是方法的类型一致,而方法的参数类型不同。可以有1个或2个以上的重载指向同一实例。
而多态、是几个子类的对象可以访问同一个方法。对象的指向的实例不同。可以指向多个实例来实现多态
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个问题不好回答,因为重载和多态的问题,也就是重载是不是多态,现在整个Java业界有两派人对这个有不同的看法,一派认为重载也是多态,说是静态多态,另一派人认为重载不是多态,真正和多态相关的是重写,重载和多态没什么关系,我也是查了不少资料,在这里说一下自己的看法;
-
重载,在编译时就能够确定将来调的是哪个方法了,根据你调用方法时候传递的参数,以此来区别调用,就是说编译的时候就确定好了,将来程序执行起来,调的就是那个方法。
-
多态,有3个必要条件,1要有继承,2要有重写,3要有向上转型,当这3个条件同时存在的时候,编译时还确实指的是父类的方法呢,但是在运行时,动态绑定!对象内部有一个方法的指针,这个指针随之改变,运行时这个指针指向的是你这个子类的重写方法!这样的方法调用在编译期间是无法确定的,所以是运行时!
-
结论:
重载只是一种语言特性,与多态无关,与面向对象也无关!只不过是重载有些“像”多态这个词本身的概念而已,面向对象的三大特性,封装、继承、多态、这个多态指的就是第二种动态绑定的多态!
-
重载,在编译时就能够确定将来调的是哪个方法了,根据你调用方法时候传递的参数,以此来区别调用,就是说编译的时候就确定好了,将来程序执行起来,调的就是那个方法。
-
多态,有3个必要条件,1要有继承,2要有重写,3要有向上转型,当这3个条件同时存在的时候,编译时还确实指的是父类的方法呢,但是在运行时,动态绑定!对象内部有一个方法的指针,这个指针随之改变,运行时这个指针指向的是你这个子类的重写方法!这样的方法调用在编译期间是无法确定的,所以是运行时!
-
结论:
重载只是一种语言特性,与多态无关,与面向对象也无关!只不过是重载有些“像”多态这个词本身的概念而已,面向对象的三大特性,封装、继承、多态、这个多态指的就是第二种动态绑定的多态!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你个清华大学的培训教程看看
所谓多态,是指把类中具有相似功能的不同方法使用同一个方法名来实现,从而可以使用相同的方式来调用这些具有不同功能的同名方法。面向对象程序设计中的多态可以通过子类对父类方法的覆盖或在同一个类中定义多个同名的不同方法亦即重载来实现。
4.3
方法的覆盖
所谓方法的覆盖(方法的重写),是指子类对自父类继承的方法进行重新的定义。
重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。
◇
方法重写时应遵循的原则:
1)改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。
2)改写后的方法不能比重写的方法产生更多的例外。
方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。
参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。
一个类的多个构造函数之间还可以相互调用,这可以通过关键字this来实现。需要注意的是,这个调用语名必须是整个构造函数的第一个可执行语句
所谓多态,是指把类中具有相似功能的不同方法使用同一个方法名来实现,从而可以使用相同的方式来调用这些具有不同功能的同名方法。面向对象程序设计中的多态可以通过子类对父类方法的覆盖或在同一个类中定义多个同名的不同方法亦即重载来实现。
4.3
方法的覆盖
所谓方法的覆盖(方法的重写),是指子类对自父类继承的方法进行重新的定义。
重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。
◇
方法重写时应遵循的原则:
1)改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。
2)改写后的方法不能比重写的方法产生更多的例外。
方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。
参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。
一个类的多个构造函数之间还可以相互调用,这可以通过关键字this来实现。需要注意的是,这个调用语名必须是整个构造函数的第一个可执行语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询