黑马程序员技术交流社区
标题:
继承和重写
[打印本页]
作者:
外面的世界
时间:
2013-8-26 08:41
标题:
继承和重写
本帖最后由 外面的世界 于 2013-8-27 07:58 编辑
看了视频,还是有点不太懂继承和重写(覆盖)的性质
继承懂了,但重写有些貌似不懂,哪位大神可以用简单的几句话表达一下
作者:
代文娟
时间:
2013-8-26 08:56
重写就相当于,如果子类不想用父类中的功能了,想实现自己想要的功能就可以进行重写,也就是说你继承了父类,想用父类中的一些功能但是有些功能我想用自己的就进行重写即可。
作者:
丶遇见另一个自
时间:
2013-8-26 09:15
简单的说 就是子类如果继承了父类 想要在定义自己的功能就必须把父类的功能全部覆盖 从新定义自己的功能这就叫重写 但是前提是有需要的情况下。。
作者:
白磊
时间:
2013-8-26 10:20
大哥啊 看来你是真不懂啊 !你现在根本没有理解这两个东西,让我给你讲讲。。。你这个问题就错了啊。继承和重写(覆盖)??? 应该是重载和重写(覆盖)吧???
1.重写(覆盖):是对于继承来说的。子类继承父类,这个时候才是重写(覆盖)。至于为什么要重写呢?这样做是为了使用父类的一些属性和方法,对于父类中的方法感到不满意的 ,就需要重了。
2.重载:发生在同一个类中,是对于 同名 但 参数不同 包括参数个数,参数类型的不同都可以。
这样你大概应该知道了吧。。。
作者:
唐升
时间:
2013-8-26 10:27
继承是在一个现有类型(父类)的基础上,通过增加新的方法和重定义已有的方法产生的一个新的类型(子类)。重定义已有的方法便是重写过程。它的功能和父类中的功能不一样。例如:
class A {
void fun1() {
System.out.println(fun2());
}
}
int fun2() {
return 123;
}
}
public class B extends A {
int fun2() {
return 456;
}
public static void main(String args[]) {
B b = new B();
b.fun1();
}
}
其中B继承了A,B中有2个方法fun1()、fun2(),fun1()没有重写和父类中的功能一样是打印方法2的结果,而fun2()便是重写了父类的方法返回值为456(父类中原有的方法2是返回值为123)。故最后主函数的运行结果打印的是456
作者:
穿靴子的猫
时间:
2013-8-26 10:59
你继承了父类的某个方法,但是这个方法你用不上 比如说吃 父类定义的是用筷子 你想用勺吃 所以就得把这个用筷子吃的方法重写成用勺子吃
作者:
黑马-文鸿利
时间:
2013-8-26 11:02
继承是子类获得父类的成员,重写是继承后重新实现父类的方法。重载是在一个类里一系列参数不同名字相同的方法。多态则是为了避免在父类里大量重载引起代码臃肿且难于维护
作者:
薛鹏鹏
时间:
2013-8-26 11:49
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作
详情参考
如何修改分类
作者:
xinchenglong
时间:
2013-8-26 15:18
重写方法的规则:
1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。
而重载的规则:
1、必须具有不同的参数列表;
2、可以有不责骂的返回类型,只要参数列表不同就可以了;
3、可以有不同的访问修饰符;
4、可以抛出不同的异常;
重写与重载的区别在于:
重写多态性起作用,对调用被重载过的方法可以大大减少代码的输入量,同一个方法名只要往里面传递不同的参数就可以拥有不同的功能或返回值。
用好重写和重载可以设计一个结构清晰而简洁的类,可以说重写和重载在编写代码过程中的作用非同一般.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2