您的位置:首页 > 编程语言 > Java开发

java面向对象(二)特殊变量this

2013-09-16 16:53 288 查看
this 变量代表对象本身
当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量。

class Point
{
        int x,y;
        Point(int a,int b)
        {
                x=a;
                y=b;
        }
        Point()
        {}
        void output()
        {
                System.out.println(x);
                System.out.println(y);
        }
        void output(int x,int y)
        {
                x=x;
                y=y;
        }
        public static void main(String[] args)
        {
                Point pt;
                pt=new Point(3,3);
        //      pt=new Point();
                pt.output(5,5);
                pt.output();
        }
}

rihiroshitekiMacBook-Air:test LiBo$ java Point
3
3

rihiroshitekiMacBook-Air:test LiBo$ java Point
5
5
rihiroshitekiMacBook-Air:test LiBo$ cat Point.java
class Point
{
     int x,y;
     Point(int a,int b)
     {
          x=a;
          y=b;
     }
     Point()
     {}
     void output()
     {
          System.out.println(x);
          System.out.println(y);
     }
     void output(int x,int y)
     {
          this.x=x;
          this.y=y;
     }    
     public static void main(String[] args)
     {
          Point pt;
          pt=new Point(3,3);
     //     pt=new Point();
          pt.output(5,5);

          pt.output();
     }    
}
rihiroshitekiMacBook-Air:test LiBo$

使用this简化构造函数的调用。

rihiroshitekiMacBook-Air:test LiBo$ java Point
1
1
rihiroshitekiMacBook-Air:test LiBo$ cat Point.java
class Point
{
     int x,y;
     Point(int a,int b)
     {
          x=a;
          y=b;
     }
     Point()
     {
          this(1,1);
     }
     void output()
     {
          System.out.println(x);
          System.out.println(y);
     }
     void output(int x,int y)
     {
          this.x=x;
          this.y=y;
     }    
     public static void main(String[] args)
     {

          Point pt;
            //     pt=new Point(3,3);
          pt=new Point();
     //     pt.output(5,5);
          pt.output();
     }    
}

关于实例的方法和实例数据成员的进一步说明
一个类所有的实例(对象)调用的成员方法在内存中只有一份拷贝,尽管在内存中可能有多个对象,而数据成员在类的每个对象所在内存中都存在一份拷贝。this变量润许相同的实例方法为不同的对象工作,
rihiroshitekiMacBook-Air:test LiBo$ java Point
6
7
rihiroshitekiMacBook-Air:test LiBo$ cat Point.java
class Point
{
     int x,y;
     Point(int a,int b)
     {
          x=a;
          y=b;
     }
     Point()
     {
          this(1,1);
     }
     void output()
     {
          System.out.println(x);
          System.out.println(y);
     }
     void output(int x,int y)
     {

        this.x=x;
          this.y=y;
     }    
     public static void main(String[] args)
     {
          Point pt;
            //     pt=new Point(3,3);
          pt=new Point();
     //     pt.output(5,5);
     //          pt.output();
     Point pt2=new Point();
     pt.x=6;
     pt2.x=7;
     System.out.println(pt.x);
     System.out.println(pt2.x);
     }    
}

this变量润许相同的实例方法为不同的对象工作.每当调用一个实例的方法时,this变量将被设置成引用该实例方法的特定的类对象。方法的代码接着会与this所代表的对象的特定数据建立关联。

class Point
{
        int x,y;
        Point(int a,int b)
        {
                x=a;
                y=b;
        }
        Point()
        {
                this(1,1);
        }
        static void output()
        {

//              System.out.println(x);
//              System.out.println(y);
                System.out.println("output() called");

        }
        void output(int x,int y)
        {
                this.x=x;
                this.y=y;
        }
        public static void main(String[] args)
        {
                Point.output();
        /*      Point pt;
        //      pt=new Point(3,3);
                pt=new Point();
        //      pt.output(5,5);
        //              pt.output();
        Point pt2=new Point();
        pt.x=6;
        pt2.x=7;
        System.out.println(pt.x);
        System.out.println(pt2.x);*/
        }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐