作者adrianshum (Alien)
看板Programming
标题Re: [问题]请问这样的 Java Class 算不算是一个 Si …
时间Thu Jan 10 11:42:25 2008
※ 引述《fourdollars (四元)》之铭言:
: : 第二点说的是用static实作的不能实作任何"有东西的"interface
: : 这里"有东西的"的意思是这个interface要求要实现某些成员函式
: : 但是用static实作的却不能有任何成员函式 只能有静态(static)函式
: Java 里面的 class function 也可以当做 member function 来使用~ @_@a
: SingletonProcess tmp;
: tmp.runCommand("dir");
: tmp.waitForTermination();
: 还是不懂为何不能算是 Singleton ... @_@a
除了其他人说了的理由, 我补充一下.
static method 虽然可以藉着一个 instance
来 invoke, 但实际上当 compile 时, 还是改回
ClassName.method() 的样子:
比如:
class Foo {
public static void staticMethod() {
System.out.println("Foo");
}
Foo foo = new foo;
foo.staticMethod();
这句虽然可以通过, 但实际 compile 时是会替换为
Foo.staticMethod();
由於并非经 instance invoke, 所以如果有 method
overriding 时, 是不会有任何 dynamic method lokup 出现:
class Bar extends Foo {
// overriden
public static void staticMethod() {
System.out.println("Bar");
}
}
Foo fooBar = new Bar();
fooBar.staticMethod();
这里仍是转为 Foo.staticMethod();
所以才会说不能 implement interface.
(虽然我觉得这样的用字有欠精准)
Alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82
※ PsMonkey:转录至看板 java 01/10 13:22