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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁园 中级黑马   /  2012-11-26 17:17  /  1161 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

父类静态方法能被子类继承覆写么,可以实现多态么?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

2 个回复

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

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

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
static方法是可以被继承的。比如package static_; public class M {    public static void test() {        System.out.println("in m");    }} class T extends M {     public static void testtttttt() {        test();        System.out.println("in t");    } }
1:  private方法不能被继承但可以重写:若重写: 父类  a=new 子类() a编译时父类决定调用的方法,运行时调用的方法是子类的方法
   2:  static 方法能被继承可以重写:若重写: 父类  a=new 子类() a编译时引用类决定调用的方法,运行时调用的方法是引用类的方法
   3:  final 方法不能被继承和重写
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马