黑马程序员技术交流社区
标题:
父类子类中都有一个相同的静态方法
[打印本页]
作者:
四顾行者
时间:
2014-6-14 23:21
标题:
父类子类中都有一个相同的静态方法
父类子类中都有一个相同的静态方法func(),Fu fu=new zi();然后运用多态调用这个静态方法。
fu.func();结果调用的是父类的静态方法。
谁能从原理上解释解释?
作者:
GoodBoy123
时间:
2014-6-14 23:24
静态方法编译运行看左边就这么一句话
作者:
HKing
时间:
2014-6-15 00:01
static修饰的静态方法不能被覆盖以及重写!
Fu fu=new zi();其中,fu的类型是Fu,所以fu.func()调用的是Fu中的func()方法,相当于Fu.func()。
如果是这样:Zi zi = new Zi(); 这时,zi的类型是Zi,所以zi.func()调用的将是Zi里面的func()方法,相当于Zi.func()。
希望对你有所帮助。能力有限,若有出错的地方请指教!
作者:
a6217815
时间:
2014-6-15 12:43
父类的调用父类的, 子类的调用子类的,static方法不能被覆盖的= =
作者:
3盐酸1硝酸
时间:
2014-6-15 15:23
本帖最后由 3盐酸1硝酸 于 2014-6-15 15:25 编辑
多态中可以将static 修饰的方法(静态方法)看做是姓氏(以毕老师讲的例子:子类是毕老师,父类是毕老师的父亲(这里就称为毕姥爷了)),方法体是名字。
Zi 中的func方法,你可以看做和父类中的方法是一样的,只不过是名字不一样。只要是毕姥爷的子女肯定姓毕,姓氏是不可以修改的了。也就是所静态方法不可以被重写和覆盖。 Fu fu=new Zi(); fu.func();相当于毕老师以毕姥爷的形式存在, 在调用姓时,调用毕姥爷的就可以了。所以fu.func(),调用的是父类中的方法。
在内存中,静态方法是在类加载的时候就已经存在的,就相当于姓氏,人一出生的他的姓氏都已经确定了。
我也是初学者,这只是我对多态中“静态方法”的理解。理解不了就死记毕老师讲的就行了。自己将多态的各种形式写写,运行运行。有助于理解和记忆。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2