A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

海不扬波

中级黑马

  • 黑马币:0

  • 帖子:102

  • 精华:0

© 海不扬波 中级黑马   /  2013-4-26 14:09  /  1853 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 海不扬波 于 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;}
}
详细分析一下,谢谢。

4 个回复

正序浏览
谢谢各位的分析。
回复 使用道具 举报
我来给你分析一下..
不好勿喷....
先说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获取
回复 使用道具 举报
先说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对象。分析完毕。
回复 使用道具 举报
哥们,能在乱点吗?{:soso_e127:}
你这代码功能是通过计数机记录创建
Point对象的个数,最后输出结果。
p1调用空参数的构造函数,p2,p3,p4
调用有参数的构造函数,有参数的构造
函数的参数通过getX(),getY()获得。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马