作者e002311 (鸿)
看板java
标题[问题] static与non static
时间Fri Jul 4 21:15:50 2014
有没有大神可以解释
System.out.println()
为什麽一个static的参用 可以 呼叫 non-static的方法
public final class System{
public final static printStream out = null;
}
public class printStream{
public void println()
}
public static void main(String[] args){
System.out.println();
}
可以过关
但我自写
public final class A{
public static B b = new B();
}}
public class B {
public static void m(){
System.out.print(1223456);
}
public void m1(){
System.out.print(1223456);
}
public static void main(String[] args) {
A.b.m1();
}
}
却无法过关
感恩
我一直以为 static 不能直接对未实例化 的non-static作使用
--
作宅男其实也没什麽不好。
你千万别问我为什麽,
因为你不是,就算解释了,你依旧不会了解。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.115.236.15
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1404479753.A.747.html
1F:推 LPH66:static 的只是 out, out 本身参照到了一个物件, println 是 07/04 21:41
2F:→ LPH66:对那个物件作用的 07/04 21:41
我看java附的原始码 System.java
public final static printStream out = null;
看不出这里有参照到物件阿
老师还特地拿这个System.out.println()
出来说
static 呼叫了non-static方法
3F:推 LPH66:至於你的例子应该是你多贴了一层 A 的关系 07/04 21:44
我打一打,後来改用复制贴上的时候没检查多贴了一层A
※ 编辑: e002311 (114.45.146.247), 07/05/2014 02:57:25
※ 编辑: e002311 (114.45.146.247), 07/05/2014 02:58:26
4F:→ ssccg:用参照呼叫non-static方法是哪边有问题? 07/05 05:00
5F:→ ssccg:是在static context中直接呼叫同一class的non-static member 07/05 05:05
6F:→ ssccg:(隐含用this呼叫目前物件的member)才不行 07/05 05:10
7F:→ ssccg:重点在目前物件(this)不能用,不是non-static不能用 07/05 05:11
8F:→ ssccg:不用特地以System.out解释,想想A.b.toString()能不能用? 07/05 05:16