Topic: 求助,java中的蛋生鸡问题 |
Print this page |
1.求助,java中的蛋生鸡问题 | Copy to clipboard |
Posted by: vic_dragon Posted on: 2005-04-19 10:41 下面这个程序非常简单,但有个地方实在让人费解: public class myDate { private int year,month,day; public myDate(int y,int m,int d) { year=y; month=((m>=1)&(m<=12))?m:1; day=((d>=1)&(d<=31))?d:1; } public void print() { System.out.println("date is "+year+" - "+month+" - "+day); } public static void main(String args[]) { myDate a= new myDate(2005,4,8); a.print(); } } /*main方法是myDate类的一个成员方法,却可以创建myDate的对象,这岂不成了蛋生鸡了吗?java中为什么有这么奇怪的语法现象? 而下面的程序和上面的等效,却非常好理解 */ class myDate { private int year,month,day; public myDate(int y,int m,int d) { year=y; month=((m>=1)&(m<=12))?m:1; day=((d>=1)&(d<=31))?d:1; } public void print() { System.out.println("date is "+year+" - "+month+" - "+day); } } class sam { public static void main(String args[]) { myDate a= new myDate(2005,4,8); a.print(); } } |
2.Re:求助,java中的蛋生鸡问题 [Re: vic_dragon] | Copy to clipboard |
Posted by: myool Posted on: 2005-04-20 09:00 这两种方法是都可以的,只不过在第二种方法中建立了一个测试类sam,来初始化类的对象,和在本类中的main方法中初始化是等效的. |
3.Re:求助,java中的蛋生鸡问题 [Re: myool] | Copy to clipboard |
Posted by: vic_dragon Posted on: 2005-04-20 10:05 /*但是... 请看下面的例子*/ public class myDate { private int year,month,day; public myDate(int y,int m,int d) { year=y; month=((m>=1)&(m<=12))?m:1; day=((d>=1)&(d<=31))?d:1; } public void fun()//非静态方法中也可以创建myDate的对象 { myDate d=new myDate(1999,5,3); d.print(); } public void print() { System.out.println("date is "+year+" - "+month+" - "+day); } public static void main(String args[]) { myDate a= new myDate(2005,4,8); a.print(); a.fun(); } } /* 那么为什么非静态方法中也可以创建包含它的类的对象,比如上面的 public void fun()*/ |
4.Re:求助,java中的蛋生鸡问题 [Re: vic_dragon] | Copy to clipboard |
Posted by: liujing319 Posted on: 2005-04-20 12:19 这很正常啊,static方法中不能直接引入non-static类型数据和对象,non-static是和对象挂钩的哦!必须先new生成后通过对象来引用 |
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 |