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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖瑞军 黑马帝   /  2011-11-4 22:20  /  1943 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 肖瑞军 于 2013-8-27 23:12 编辑

22222222222222

5 个回复

倒序浏览
可以继承
子类和父类可以有相同返回类型、方法名、参数列表的静态方法,如果从这个层面讲,子类算是override父类的静态方法吧。
但准确的讲此时只是子类对父类静态方法的隐藏(hide),子类的静态方法完全体现不出多态,就像子类字段隐藏父类的字段一样,在利用引用访问对象的字段或静态方法时,是引用类型(type)决定了事实上访问的是哪个字段,而非当前引用实际代表的是哪个类。因此,子类静态方法不能覆盖父类静态方法。

另外,在jdk1.5之前,覆盖要求子类方法的返回类型与父类的方法严格一致,但jdk1.5和其后,子类方法的返回类型可以是父类方法返回类型的子类。
Java中,多态有两种方式: 重载和重写
重载是发生同一个类内,方法同名,但参数不同
重写则发生在子类内,静态方法是属于类方法,由类直接调用,子类无法调用父类的静态方法
静态方法可以重载,不可以重写,因此是有多态的

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
静态方法不能被覆盖,进而就实现不了多态了
回复 使用道具 举报
谢谢,柴同学!
回复 使用道具 举报
肖瑞军 发表于 2011-11-4 23:09
谢谢,柴同学!

不客气呵呵
回复 使用道具 举报
JAVA静态方法形式上可以重写,但从本质上来说不是JAVA的重写。因为静态方法只与类相关,不与具体实现相关,声明的是什么类,则引用相应类的静态方法(本来静态无需声明,可以直接引用)。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马