黑马程序员技术交流社区
标题:
求分析以下程序。
[打印本页]
作者:
海不扬波
时间:
2013-4-26 14:09
标题:
求分析以下程序。
本帖最后由 海不扬波 于 2013-4-26 18:04 编辑
public class Example3_2
{
public static void main(String args[]){
Point p1,p2,p3;
p1=new Point();p2=new Point(40,50);
p3=new Point(p1.getX()+p2.getX(),p1.getY()+p2.getY());
System.out.println("P3.x="+p3.getX()+",p3.y="+p3.getY());
Point p4=new Point(p1.x,p2.y);
System.out.println("p4.x="+p4.x+",p4.y="+p4.y);
System.out.println("程序共有Point对象"+Point.pointNum()+"个");
}
}
class Point{
int x,y;
Static int pCount=0;
Point(){
x=10;y=20;pCount++;
}
Point(int x,int y){
this.x=x;
this.y=y; pCount++;
}
static int pointNum(){
return pCount;
}
int getX(){ return x;}
int getY(){return y;}
}
详细分析一下,谢谢。
作者:
钟伟杰
时间:
2013-4-26 15:16
哥们,能在乱点吗?{:soso_e127:}
你这代码功能是通过计数机记录创建
Point对象的个数,最后输出结果。
p1调用空参数的构造函数,p2,p3,p4
调用有参数的构造函数,有参数的构造
函数的参数通过getX(),getY()获得。
作者:
付银攀
时间:
2013-4-26 15:36
先说Point这个类,有两个构造方法,Point(){
x=10;y=20;pCount++;
}
Point(int x,int y){
this.x=x;
this.y=y; pCount++;
}
第一个构造方法是无参数的,采用这个构造方法生成类对象时,把类变量X赋值10,y赋值为20,pCount加1,;第二个构造方法是接受两个参数,分别赋值给x和y,并把pcount加1;同时pCount为static类型的,所以只初始化一次,就当第一次调用pCount++时返回1,第二次调用pCount++后返回2;
然后看Example3_2这个类,先声明了p1,p2,p3三个Point类型的对象,分别用不同的构造方法初始化,p1=new Point()初始化后,x=10,y=20,pcount=1;p2=new Point(40,50),初始化后,x=40,y=50,pCount=2;所以 p3=new Point(p1.getX()+p2.getX(),p1.getY()+p2.getY()),就等价于p3=new (10+40,20+50),既p3的 x=50,y=70,pCount=3;p1,p2,p3,是三个类对象,初始化后存储在不同区域,x,y是对象的属性,所以每个对象的属性值都不同;p4对象是在声明的同时采用Point类的第二个构造方法初始化,p4的x和y属性值分别为10和50,;因为共有四个对象初始化所以共有四个point对象。分析完毕。
作者:
刘胜寒
时间:
2013-4-26 17:39
我来给你分析一下..
不好勿喷....
先说class Point;
这个类有三个成员变量
x,y,pCount
pCount是被静态修饰的所以直接可以Point.pCount直接引用
还有两个构造函数
三个成员函数,其中pointNum是被static修饰的,所以可以Point.pointNum(),直接调用
getX和getY分别返回x和y的值
基本把Point分析完了
分析class Example了
直接到main函数
Point p1,p2,p3 ; 定义三个类型为Point的变量
p1= new Point(); 执行Point类中空参类型的构造函数 p1.x=10 p1.y=20 p1.pCount=1;
p2= new Point(40,50); 执行Point非空参数的构造函数p2.x=40,p2.y=50,p2.pCount=2;
p3= p3=new Point(p1.getX()+p2.getX(),p1.getY()+p2.getY()); 和p2一致 不说了
p3.x=p1.x+p2.x; p3.y=p1.y+p2.y;p3.pCount=3;
System.out.println("P3.x="+p3.getX()+",p3.y="+p3.getY());
这个不要说了吧
Point p4=new Point(p1.x,p2.y); 和p1一致 p4.x = p1.x;p4.y=p2.y; p4.pCount=4;
System.out.println("程序共有Point对象"+Point.pointNum()+"个");
这个不用说了吧
Point.pointNum() 因为pointNum()被静态修饰可以直接调用
其实我想不明白啊
int x y pCount 没有被private 修饰 为何还要 用getX获取
作者:
海不扬波
时间:
2013-4-26 18:05
谢谢各位的分析。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2