作者bleed1979 (口德是一种美德)
看板java
标题Re: [问题] static runtime问题
时间Sat Dec 20 15:51:47 2014
※ 引述《kdok123 (小天)》之铭言:
: ex:
: class A{
: static void tell(){
: sout("I am A");
: }
: }
: class B extends A{
: static void tell(){
: super.tell(); //问题
: }
: }
: 问题:
: 有别於c++, Java的static是在runtime执行的
: 这样我想static的运算应该会少了很多限制
: 所以我测试了一下让static call super指针(两个都是runtime才运算的)
: 结果发现不行?
: 其实static用起来还是跟C++一样(至少我这麽觉得...)
: 请问既然static是在runtime运行的,那为什麽很多runtime的动作没办法一起做呢?
http://www.quora.com/Why-cant-static-method-access-this-or-super-in-Java
这个人解释得较好。
Ranjith Kumar S, Computer Engineer
A static method which belongs to the class and not to the object(instance).
It can access only static data. It can not access non-static data (instance
variables). It can be accessed directly by the class name and doesn’t need
any object.
this keyword can be used to refer current class instance variable.
http://www.javatpoint.com/this-k...
super is used to refer immediate parent class instance variable.
http://www.javatpoint.com/super-...
Eventually both this and super keyword refers to instance variables. So a
static method cannot refer to “this” or “super” keywords.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.203.156
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1419061919.A.576.html
1F:推 kdok123: 嗯! 我知道static不行,只是我想说既然他是runtime执行的 12/20 17:02
2F:→ kdok123: 那应该要可以才对? 有没有例子可以说明static在java里 12/20 17:02
3F:→ kdok123: 是runtime执行的呢? 12/20 17:02
4F:→ luoqr: static{ System.out.println("hello") } 12/20 18:37
5F:→ ssccg: 为什麽在runtime执行要可以? runtime的时候static context 12/20 21:48
6F:→ ssccg: 里还是没有instance可以用啊 12/20 21:48
7F:推 icydream: 我比较好奇的是,既然static member不需要instance,就 12/21 12:34
8F:→ icydream: 可以呼叫使用,那为啥在撰写的时候,却可以使用instance 12/21 12:36
9F:→ icydream: 来呼叫呢?(有warning,但不影响执行) 12/21 12:37
10F:→ ssccg: 其实不是用instance呼叫,是compiler看reference variable 12/21 13:53
11F:→ ssccg: 的type去选class,这是compile time做的没用到instance 12/21 13:55
12F:推 Killercat: 你要证明这个很简单 假设A有个static叫做STATIC() 12/22 14:06
13F:→ Killercat: A a = null; a.Static(); 你跑跑看就知道了 12/22 14:07
14F:→ Killercat: 你会发现 诶 就算是null一样可以跑喔 超神奇的(误 12/22 14:09
15F:→ Killercat: 其实我觉得压根不该有sugar 不过这太基本教义派了.... 12/22 14:10