看板java
标 题Re: 一个很笨的问题
发信站SayYA 资讯站 (Sat Jul 17 08:51:45 2004)
转信站ptt!ctu-reader!news.nctu!SayYa
※ 引述《[email protected] ( π = 3.1415962)》之铭言:
> 在类别里面宣告传回值的方法为何前面要加static
> 是否是因为main的那个static的关系呢?
> A:
> littlebie98:
> static- 静态
> 修饰在method上面,
> 有与object无关的意思(指和里面的member的关系)
> (
> 笼统的来看...更容易理解的方式..
> 就是不需要new就可用的就叫static...
> A a = new A();
> a.f();==>这是与object有关
> A.k();=>这是与object无关
> )
> 因此,若是一个A.k()用到一个和object有关member or funtion,
> 建构後才有的那还真是怪,所以 static funtion只能使用static member
> 和static funtion
> ytterbium:
> 两个完全没关系, static表示这个method is class method 而
> 不是 object method
> RedRabbit:
> 你说的一点也没错,就是因为这个原因
> 对於第二个问题各大大间彼此有不同的意见
> 再请问那一个说法才是正确滴.....@@a??
> 也谢谢 littlebie98、ytterbium 及 RedRabbit 精辟的解说
> fish
首先,你要了解static对於一个class或一个object的意义有什不同
static method ==> 不需产生物件实体就能使用 <== 你产生了实体还是能用
class A {
static void a(){;}
}
你能这样用 A.a();
也能这样用 A a = new A(); a.a();
static 的另一个语意是,「class的」
到这地步,你可以完全忘了物件的存在,所有static都可以想成class的
static member ==>
class A{
public static A self = new A();
private A(){;}
static int a;
}
不管你产生几个实体,self只有一个,a也只有一个。
利用这样的特性,能有很多有趣的应用。
而,你目前的盲点在之前的用法,
你需要一个不用需实体的method/variable,就用static
static int add(int a){return 10+a;}
也只是一个单纯的static method,
是由写程式的人决定的。
而public static void main(){}
在你程式还没执行前,不会有实体产生的,
你没有实体,就不能控制其他非static的method
所以,main,一定要static。
--
如果
当初我
没有勇
气去尝试
看来几乎不可
能的事
,
如今我就还
只是个牧
羊人而已
。
[牧羊少
年奇幻之
旅]
--
※ Origin: SayYA 资讯站 <bbs.sayya.org>
◆ From: pc210-59-94-172.ntntc.edu.tw