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

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);*/

        }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值