黑马程序员技术交流社区
标题:
静态方法的覆写问题 。
[打印本页]
作者:
袁园
时间:
2012-11-26 17:17
标题:
静态方法的覆写问题 。
父类静态方法能被子类继承覆写么,可以实现多态么?
作者:
李有
时间:
2012-11-26 17:20
可以继承
子类和父类可以有相同返回类型、方法名、参数列表的静态方法,如果从这个层面讲,子类算是override父类的静态方法吧。
但准确的讲此时只是子类对父类静态方法的隐藏(hide),子类的静态方法完全体现不出多态,就像子类字段隐藏父类的字段一样,在利用引用访问对象的字段或静态方法时,是引用类型(type)决定了事实上访问的是哪个字段,而非当前引用实际代表的是哪个类。因此,子类静态方法不能覆盖父类静态方法。
另外,在jdk1.5之前,覆盖要求子类方法的返回类型与父类的方法严格一致,但jdk1.5和其后,子类方法的返回类型可以是父类方法返回类型的子类。
Java中,多态有两种方式: 重载和重写
重载是发生同一个类内,方法同名,但参数不同
重写则发生在子类内,静态方法是属于类方法,由类直接调用,子类无法调用父类的静态方法
静态方法可以重载,不可以重写,因此是有多态的
作者:
快乐之恋
时间:
2012-11-26 17:51
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 方法不能被继承和重写
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2