`
suuu
  • 浏览: 16389 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

this关键字

 
阅读更多

一、使用this调用成员变量和成员函数

看下面代码:

Dog.java:

 

public class Dog {

void xx(){
		System.out.println (this.name+this.age+"岁了");
    }
    String name;
    int age;
}

 

 

DogTest.java:

 

 class DogTest{
 	public static void main (String[] args) {
 		Dog dog1 = new Dog();
 		Dog dog2 = new Dog();

		dog1.name = "来福";
		dog1.age = 3;

		dog2.age= 2;
		dog2.name = "旺财";


 		dog1.xx();
 		dog2.xx();
	 }
 }

  
输出结果:

来福3岁了
旺财2岁了

 

 

当类中存在成员变量和参数列表时,若不加this关键字,则系统不知道该输出成员变量的name还是参数列表的name。

如下例子:

Dog.java:

 

public class Dog {
    String name;
    int age;
void xx(String name,int age){
		System.out.println (name+age+"岁了");
    }

}

 

 DogTest.java:

 

 class DogTest{
 	public static void main (String[] args) {
 		Dog dog1 = new Dog();
 		Dog dog2 = new Dog();

		dog1.name = "来福";
		dog1.age = 3;

		dog2.age= 2;
		dog2.name = "旺财";


 		dog1.xx("来福来福",5);
 		dog2.xx("旺财旺财",6);
	 }
 }

  输出:

来福来福5岁了
旺财旺财6岁了

 

解析:当类中存在成员变量和参数列表时,若没有this关键字,则系统会以为当前打印的name是参数列表里的name。

 

二、使用this调用构造函数 

 

例子:

Dog.java:

 

public class Dog {
    String name;
    int age;
    String color;

    Dog(){
    }
    Dog(String name,int age){
    	/**
		 *下面的参数都是赋值给成员变量的
		 **/
		this.name = name;
		this.age = age;
    }
	Dog(String name,int age,String color){
		/**
		 *这里体现了this的另外一个用途:调用同一个类当中另外一个构造函数
		 *至于调用哪一个构造函数,就根据this后面的参数类型和个数来决定
		 **/

		//这条语句必须放在第一
		this(name,age);
		this.color = color;
    }
	void xx(){
		System.out.println (color+"的"+name+age+"岁了");
	}
}

 

DogTest.java:

 

 class DogTest{
 	public static void main (String[] args) {
 		Dog dog1 = new Dog("旺财",2,"黄色");
 		Dog dog2 = new Dog("来福",3,"黑色");
 		dog1.xx();
 		dog2.xx();

	 }
 }

  输出:

黄色的旺财2岁了
黑色的来福3岁

 

解析:在Dog.java中.定义了3个构造函数,this关键字可调用同一类中的另外一个构造函数.若想同时调用两个构造函数,则

 

public class Dog {
    String name;
    int age;
    String color;

    Dog(){
    }
    Dog(String name,int age){
		this();
		this.name = name;
		this.age = age;
    }
	Dog(String name,int age,String color){

		this(name,age);
		this.color = color;
    }
	void xx(){
		System.out.println (color+"的"+name+age+"岁了");
	}
}

 因为this();和this(name,age);都必须放在第一。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics