站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
JAVA 方法的重载与重写
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
<span style="text-align:center; border:1px solid #000; float:right; padding:6px;"><strong>导航:</strong> [[JAVA学习教程#JAVA学习教程|上一页]] | {{template:开发语言导航}}</span> <div style="clear:both;"></div> Java语言中的概念就是多,这回又有两个概念,重载和重写。这是两个新概念,也是两个令初学者容易混淆的概念。他们的概念截然不同,只不过都有个“重”字,就以为是很像的。 <br> 下面解释一下这两个概念:<br> 方法重载(overloading method) 是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。<br> 方法重写(overiding method) 子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。如果还是搞混的话,就把“重写覆盖”,这个词多念几遍吧。知道是覆盖的话,就知道是子类覆盖父类的方法了。<br> 实践: 重载的例子<br> public class MethodOverloading { <br> void recieve(int i) { <br> System.out.println("接收一个int数据"); <br> System.out.println("i="+i); <br> } <br> void recieve(float f) { <br> System.out.println("接受一个float型的数据"); <br> System.out.println("f="+f); <br> } <br> void recieve(String s) { <br> System.out.println("接受一个String型数据"); <br> System.out.println("s="+s); <br> } <br> public static void main(String[] args){<br> MethodOverloading m = new MethodOverloading();<br> m.recieve(3456);<br> m.recieve(34.56);<br> m.recieve(“......“);<br> }<br> } <br> 大家看到了上面的例子方法receive()有三个,名字相同参数不同。这样的话,在main()调用的时候,参数用起来就很方便了。重写的例子似乎不用举了,记不住的话,就和“覆盖”。<br> 有时候,重载和重写的方式有些复杂,在jdk5里面。有一些方式能简化一些。我们来看看吧,jdk5的可变参数。 如果把相同参数类型的方法重载好几遍真的是很烦。就一个方法,pri(String args), pri(String arg0 ,String arg1), pri(String arg0,String arg1,String arg2), pri(String arg0,String arg1,String arg2,String arg3)。这样的话会写很多烦琐的代码。现在jdk5可以,用“…”来代替这些参数。<br> 实践:<br> public class overload { <br> //若干个相同类型的参数,用“...”代替<br> public void pri(String... strings ){<br> for (String str : strings) //for这个循环语句也有迭代的意思<br> System.out.print(str); <br> }<br> public static void main(String[] args){<br> new overload().pri("100jq"," );<br> }<br> } <br> jdk5的方法重写,比以前多了一个叫做协变返回的概念。在以往jdk的版本中,还有一个比较让人讨厌的地方。方法重写确实是比较不错的机制,如果想用父类的方法,写个super就可以了,如果不想用父类的方法就重写覆盖。但是重写覆盖的返回类型不能覆盖,父类的类型不够用怎么办,我们想在子类重写它的类型可以吗?现在可以了。<br> 看下面的例子:<br> class Point2D { //定义二维的点<br> protected int x, y;<br> public Point2D() {<br> this.x=0;<br> this.y=0;}<br> public Point2D(int x, int y) {<br> this.x = x;<br> this.y = y;<br> }}<br> //定义三维的点,继承二维<br> class Point3D extends Point2D {<br> protected int z;<br> public Point3D(int x, int y) {<br> this(x, y, 0);<br> }<br> public Point3D(int x, int y, int z) {<br> this.x = x;<br> this.y = y;<br> this.z = z;<br> }}<br> //定义二维的位置<br> class Position2D {<br> Point2D location;<br> public Position2D() {<br> this.location = new Point2D();<br> }<br> public Position2D(int x, int y) {<br> this.location = new Point2D(x, y);<br> }<br> public Point2D getLocation() {<br> return location;<br> }}<br> //定义三维的位置,继承二维的位置<br> class Position3D extends Position2D {<br> Point3D location; //在这里已经变成Point3D的类型了<br> public Position3D(int x, int y, int z) {<br> this.location = new Point3D(x, y, z);<br> }<br> @Override //注释是重写方法<br> public Point3D getLocation() {<br> return location; //返回是子类的类型而不是原来的类型了<br> }<br> } <br> [[category:Java教程]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:开发语言导航
(
编辑
)