Topic: 这段程序,我有一点不理解,望高手指点 |
Print this page |
1.这段程序,我有一点不理解,望高手指点 | Copy to clipboard |
Posted by: huahua325 Posted on: 2005-08-18 10:54 class Cup{ Cup(int marker){ System.out.println("Cup(" + marker + ")"); } void f(int marker){ System.out.println("f(" + marker +")"); } } class Cups { static Cup c1; static Cup c2; static { c1 = new Cup(1); c2 = new Cup(2); } Cups () { System.out.println("Cups()"); } } public class bb{ public static void main(String [] args){ System.out.println("Inside main()"); Cups.c1.f(99); } } 这段程序的运行结果是: Inside main() Cup(1) Cup(2) f(99) 但是我不明白为什么会有 Cup(2) 这个运行结果 |
2.Re:这段程序,我有一点不理解,望高手指点 [Re: huahua325] | Copy to clipboard |
Posted by: beyond1984 Posted on: 2005-08-18 11:36 ..... 你对static成员有何看法??? 对于一个类,首先初始化static变量,然后static成员函数或是构造函数,接着是instance变量,instance成员函数或是构造函数。 ... static Cup c1; static Cup c2; static { c1 = new Cup(1); c2 = new Cup(2); } ... 你在调用Cups.c1.f(99)时,使用的是[class].[static member].[member function]的格式,当然不管是否用到c2,都会在使用这个类的时候,现初始化static成员的。所以,c2也被初始化了,其构造函数System.out.println("Cup(" + marker + ")"); 就会显示“Cup(2)”了。 |
3.Re:这段程序,我有一点不理解,望高手指点 [Re: huahua325] | Copy to clipboard |
Posted by: huahua325 Posted on: 2005-08-18 15:41 谢谢 但是还有一点不明白 为什么下面的这个函数没有初始化 Cups () { System.out.println("Cups()"); } 结果里没有输出: Cups() |
4.Re:这段程序,我有一点不理解,望高手指点 [Re: huahua325] | Copy to clipboard |
Posted by: yoreland Posted on: 2005-08-18 18:33 huahua325 wrote: Cups () 是构造函数,没有创建Cups类型的对象就不会执行…… 个人观点。。 |
5.Re:这段程序,我有一点不理解,望高手指点 [Re: huahua325] | Copy to clipboard |
Posted by: huahua325 Posted on: 2005-08-19 09:14 那也就是说, Cups.c1.f(99) 这样的一个调用语句, 只能让cups类中的static 变量初始化, 而不能执行该类中的其他的 函数代码 对吗? |
6.Re:这段程序,我有一点不理解,望高手指点 [Re: huahua325] | Copy to clipboard |
Posted by: nevercompromise Posted on: 2005-08-25 17:32 我认为是这样的,cups没有构造实例,所以不用调用构造函数,更加没有调用类内的其他函数。 |
7.Re:这段程序,我有一点不理解,望高手指点 [Re: huahua325] | Copy to clipboard |
Posted by: huahua325 Posted on: 2005-08-26 09:20 谢谢! |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |