A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨同旺 中级黑马   /  2013-4-22 05:53  /  1704 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨同旺 于 2013-4-22 22:24 编辑

说说重载和重写的区别,尽量详细些,满足什么条件才构成重写?

多态产生的条件,是什么?

6 个回复

倒序浏览
重载与重写的区别:
重载:在同一个类中,方法名相同,参数列表不同,与返回类型没有任何关系;
重写:在两个具有继承关系的类中,方法名相同,参数列表相同,并且返回类型也要相同;(也是重写需要满足的条件)

多态产生的条件:
其一多态必须具备的条件,那就是继承,如果两个类他们没有继承关系的存在,那么就没有多态;
其二子类重写父类的方法;
其三父类的引用对象指向子类对象;
如果具备了以上三个条件,我们就可以认为它是多态。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
重写,重载
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
java多态存在的三个必要条件:

1.需要有继承关系的存在

2.需要有方法的重写

3.需要有父类的引用指向子类对象

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
重载是看你的参数列表是否一致,重写是函数返回类型,函数名,主要的是参数列表都要一致!
回复 使用道具 举报
重载是本类之间,而重写是在父子类之间,子类覆盖掉父类的方法;但要注意的是如果父类的方法是静态方法的时候;即使重写了;但是调用的时候仍然是调用父类的静态方法;这样的话用多态就没意义了;重写父类的方法;子类的访问权限必须大于等于父类;即如果父类的方法是public;那么子类的方法的权限不能低于public。
多态就是子类对象当做父类对象来看;父类对象的引用指向子类;
   对于多态的产生;封装是类的基础;有了类才有继承;有了继承才有多态。父类:Animal   子类: Dog;  如果  Animal ani = new Dog(); 如果子类重写了父类方法,那么在编译时编译器会把该对象认定为  ani对象;即认定ani只有Animal的方法;但是在运行时,通过动态邦定技术,会调用子类的方法(如果重写了父类的)。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
重载的规则:
1.必须具有不同的参数列表。
2.可以有不同的返回类型,只要参数列表不同就可以了。
3.可以有不同的访问修饰符。
4.可以抛出不同的异常。
重写方法的规则:
1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载。
2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)。
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

重写的要素:参数的类型和个数,以及参数的排列顺序,方法名一定要相同。
多态产生的条件:
1.要有继承。
2.要有重写。
3.父类引用指向子类。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
黄玉昆 黑马帝 2013-4-22 21:39:13
7#
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马