再谈重载(overload ),重写(overwrite ),覆盖(override)
java吧
全部回复
仅看楼主
level 8
Matrixes826
楼主
一楼度娘,防偷窥。
2013年04月16日 06点04分
1
level 8
Matrixes826
楼主
二楼是我的。
2013年04月16日 06点04分
2
Matrixes826
Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。[$1](1)相同的范围(在同一个类中);[$1](2)函数名字相同;[$1](3)参数不同;[$1](4)virtual 关键字可有可无。[$1]
2013年04月16日 06点04分
Matrixes826
回复 Matrixes826 :Override(覆盖):是指派生类函数覆盖基类函数,特征是:[$1](1)不同的范围(分别位于派生类与基类);[$1](2)函数名字相同;[$1](3)参数相同;[$1](4)基类函数必须有virtual 关键字。
2013年04月16日 06点04分
Matrixes826
Overwrite(重写):是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
2013年04月16日 06点04分
Matrixes826
回复 Matrixes826 :(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
2013年04月16日 06点04分
level 8
Matrixes826
楼主
三楼也占着
2013年04月16日 06点04分
3
Matrixes826
现在问大家一个问题:重写(overwrite ),覆盖(override)是一个意思吗?
2013年04月16日 06点04分
Matrixes826
overload (重载)关键字: 无[$1]1.使用的地方:同一类里。(其实是同一类里同一名称的方法不同版本的一种叫法)[$1]2.要重载的方法和被重载的方法要求:参数列表不同或返回类型和参数列表都不同,只有返回类型不同不能重载。(所谓的参数列表不同就是参数个数或者参数类型不同或者二者都不同)
2013年04月16日 06点04分
Matrixes826
overwrite (重写)关键字:new[$1]1.用来是从父类继承的与是由了new关键字的方法的方法名一样的所以方法无效就像父类里不存在这些方法一样。只要去方法名一样别的没要求。
2013年04月16日 06点04分
Matrixes826
override (覆写)关键字: override [$1]1.override的方法必须父类的(直接父类或间接父类(就是向上n层的父类))虚方法或抽象方法其中抽象方法是必须覆写的。[$1]2.要求3处相同[$1]相同的方法名称称;[$1]相同的参数列表;[$1]相同的返回类型。
2013年04月16日 06点04分
level 1
回忆轻快安眠
计算算式:1+21+22+23+…+2n。(注:n由键盘输入)。请问这个怎么做啊??
2013年04月16日 06点04分
4
Matrixes826
var n = window.prompt("计算1+21+22+23+…+2n请在此输入n的值","请在此输入n"); n = (Number) ("2" + n); sum = eval("1+21+22+23")+n; alert(sum);
2013年04月16日 06点04分
回忆轻快安眠
回复 Matrixes826 :哇谢谢,我试试
2013年04月16日 07点04分
回忆轻快安眠
回复 Matrixes826 :好象我输错了。。应该是2的次方,,求教!
2013年04月16日 07点04分
Matrixes826
回复 Matrixes826 : var n = window.prompt("计算1+21+22+23+…+2n请在此输入n的值","请在此输入n"); n = n - 1; var test = "1+"; for(var i = 0;i<n;i++){ test += "(2<<"+i+")+"; } test += "(2<<"+n+")" alert(eval(test));
2013年04月16日 07点04分
level 5
ChiaLe♂
十五字加经验啊加经验够够够够了
2013年04月16日 06点04分
5
Matrixes826
苏打绿的歌吗?听不懂这首的意思。
2013年04月16日 06点04分
level 8
Matrixes826
楼主
现在问大家一个问题:重写(overwrite ),覆盖(override)是一个意思吗?
2013年04月16日 06点04分
6
中国的尊严
同求
2013年04月16日 07点04分
__楼主无节操
回复 中国的尊严 :是一个意思, 不过也有说法,覆盖是写一个跟父类相同的。重写是继承虚方法。 我对这种说法持保留意见。
2013年04月16日 09点04分
__楼主无节操
反正我习惯重写与重载
2013年04月16日 09点04分
妹控之兄
回复 __楼主无节操 :补一个意思
2013年04月16日 10点04分
level 9
miaoxingren1
是的
2013年04月16日 06点04分
7
Matrixes826
给一个官方解释。
2013年04月16日 07点04分
Matrixes826
注释类型 Override[$1]@Target(value=METHOD)@Retention(value=SOURCE)public
@interface
Override表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。
2013年04月16日 07点04分
miaoxingren1
回复 Matrixes826 :骗回复成功
2013年04月16日 07点04分
Matrixes826
回复 miaoxingren1 :有人说不同的。
2013年04月16日 07点04分
level 9
蓝色LUO可可
额
2013年04月16日 06点04分
8
Matrixes826
2013年04月16日 07点04分
level 12
兰缙安___
百度知道里讲的很清楚了。
2013年04月16日 11点04分
11
Matrixes826
没有,很乱 的。
2013年04月17日 07点04分
level 5
敬宝又4
我以为我进错吧了,怎么讨论起C++了
Java和C++在重写和覆盖的规则上,还是有些不同的
2013年04月16日 12点04分
12
Matrixes826
当然有些不同。
2013年04月17日 07点04分
1