java_this

1.使用this调用成员变量和成员函数

2.使用this调用构造函数

分为两种情况,一种是this可以省略,另一种是不可以省略,

①先看可以省略this的时候的用法:

Person.java

 1 package thisjava;
2
3 public class Person
4 {
5 String name;
6
7 void talk()
8 {
9 //完整的写法应该是这个System.out.println("my name is"+this.name);
10 //this 表示调用函数的对象,也就是那个函数调用了talk,this就代表那个对象
11 //这种情况下,this是可以省略的
12 System.out.println("my name is"+name);
13 }
14 }

Test.java

 1 class Test{
2 public static void main()
3 {
4 Person p1=new Persom();
5 p1.name = "zhang";
6
7 Person p2=new Person();
8 p2.name="lisi";
9
10 p1.talk();
11 p2.talk();
12 }
13
14
15 }

上面这种是可以省略this,

②。不可以省略this的时候,

 1 package thisjava;
2
3 public class Person
4 {
5 String name;
6
7 void talk(String name)
8 {
9 //这种情况下,不可以省略this,如果省略掉的话,这里打印的name就不是成员变量< String name; >的name的值
10 //而是参数列表里面的< (String name) >的值
11 System.out.println("my name is"+this.name);
12 }
13 }
 1 class Test{
2 public static void main()
3 {
4 Person p1=new Persom();
5 p1.name = "zhang";
6
7 Person p2=new Person();
8 p2.name="lisi";
9
10 p1.talk("zhangsan1");
11 p2.talk("lisi1");
12 }
13 }


原来this 这么复杂,未完 -- 待续
this的用法:

代码main函数:

1  class Test
2 {
3
4 public static void main()
5 {
6 Person p1=new Person("zhansan ",46,"beijing" );
7 }
8
9 }

Test.java

class Person{
 string name;
 int age;
 String address;
 
	Person(){
		System.out.println("无参数的构造函数");
	}
	
	Person(String name,int age){
	//	this();
		this.name=name;
	this.age=age;
	System.out.println("两个参数的构造函数");
	}
	
	Person(String s1,int age,String address)
	{
		// 要注意的是,对this的调用必须是构造函数中的第一个语句,
		//下面的代码是错的,不可以用this同时调用两个构造函数,因为必然会有另外一个不是第一个语句,会出错的,如果一定要用this调用无参的构造函数
		//可以将this(); 写到上一个Person的构造函数中的第一句话,如上面注释中的语句
	 
	//   this();          //调用的是第一个构造函数,调用本类当中其他的构造函数,调用那一个是根据传入的参数过的个数,以及类型来决定
	  
	 
	  
	  this(name,age);  // 第二种用法,调用上一个的Person构造函数,避免代码的重复
	  this.address= address;// 第一种用法:把参数的address赋值给成员变量
	System.out.println("三个参数的构造函数");	
	}
}

运行结果如下:





posted on 2011-10-07 22:51  wangbokun  阅读(658)  评论(0编辑  收藏  举报

导航