一个java的程序--我是菜鸟初学者

来源:百度知道 编辑:UC知道 时间:2024/06/15 11:44:15
class PtNumInt111
{
public static void change(int x,int y)
{

x=x+y;
y=x-y;
x=x-y;
}
public static void change(int num[])
{
num[0]=num[0]+num[1];
num[1]=num[0]-num[1];
num[0]=num[0]-num[1];
}
public static void change(Point pt)
{
pt.x=pt.x+pt.y;
pt.y=pt.x-pt.y;
pt.x=pt.x-pt.y;
}

}

class Point
{
int x,y;
}
class PtNumInt
{
public static void main(String []args)
{
System.out.println("this is int's Test");
int x=3;int y=4;
change(x,y);
System.out.println("x="+x+","+"y="+y);
System.out.println("this is num's Test");
int []num=new int[]{3,4};
change(num);
System.out.println("num[0]="+num[0]+","+"num[1]="+num[1]);
System.out

Java中每个类都是进行封装的.

即是说你在的class PtNumInt中调用到了change(int,int);.这个change(int,int)必须存在于PtNumInt中,或者是他的超类中.

显然楼主这样写是错的.因为change(int,int)并不存在于PtNumInt类中

而change(int,int)是static方法,你可以用

类名.方法名

的方式调用到,比如PtNumInt111.change(x,y);如果非static方法的话,就必须要创建实例后再调用了.

楼主提到,如果把class PtNumInt里的内容放到class PtNumInt111里,就不会出错了.这样,PtNumInt 就成了PtNumInt的111内部类了.

内部类可以调用外部类的成员变量和方法.

我记得,你把main方法放在了PtNumInt中,即是放在内部类中.这个内部类应该要加上static修饰符的吧,不然应该还是会报错的吧?

为正确理解static在应用于内部类时的含义,必须记住内部类的对象默认持有创建它的那个封装类的一个对象的句柄。换成楼主的例子即是说PtNumInt持有创建PtNumInt111的一个对象的句柄.

然而,假如我们说一个内部类是static的,这种说法却是不成立的。因为 为创建一个static内部类的对象,我们不需要一个外部类对象,所以如果把主方法,即main方法写在了内部类,这个内部类必须是static内部类.

题外话:你的change方法并不能实现值的交换.交换的只是形式参数.

你在这个PtNumInt类调到其他类的方法,必须是 对象。方法()
new PtNumInt111.change(pt);
这样的