轉(zhuǎn)發(fā)請(qǐng)注明出處:
安卓猴的博客(http://sunjiajia.com)
本節(jié)課程將學(xué)習(xí)以下內(nèi)容:
- this的涵義
- 使用this調(diào)用成員變量和成員函數(shù)
- 使用this調(diào)用構(gòu)造函數(shù)
this的涵義
this代表一個(gè)對(duì)象渤闷,它代表了調(diào)用當(dāng)前類(lèi)中的變量或者函數(shù)的對(duì)象。
使用this調(diào)用成員變量和成員函數(shù)
例子:(請(qǐng)動(dòng)手)
1.新建一個(gè)名為Person.java的Java源文件:
class Person{
String name;
void talk(){
// 這里的this就是一個(gè)Person的對(duì)象。
System.out.println("My name is " + this.name);
}
}
2.新建一個(gè)名為Demo01.java的Java源文件:
class Demo01{
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "zhang3";
Person p2 = new Person();
p2.name = "li4";
// 由于Person類(lèi)中的talk方法中挫鸽,有了this.name的表達(dá)挫酿,用了this關(guān)鍵字音榜,
// 因此斗埂,當(dāng)p1調(diào)用talk()方法時(shí)塞琼,this.name相當(dāng)于p1.name;
// 當(dāng)p2調(diào)用talk()方法時(shí),this.name相當(dāng)于p2.name愧膀。
p1.talk();
p2.talk();
}
}
使用this調(diào)用構(gòu)造函數(shù)
- 格式:this(參數(shù)1,參數(shù)2);
- 它的作用是調(diào)用同一個(gè)類(lèi)中的其他構(gòu)造函數(shù)拦键,
- this的()中有幾個(gè)參數(shù),就會(huì)調(diào)用有幾個(gè)參數(shù)的構(gòu)造函數(shù)檩淋。
- 注意:它必須放在當(dāng)前構(gòu)造函數(shù)的第一行芬为。
例子:(請(qǐng)動(dòng)手)
1.新建一個(gè)名為Dog.java的Java源文件:
class Dog{
String name;
int age;
String color;
Dog(){
System.out.println("無(wú)參數(shù)的構(gòu)造方法");
}
Dog(String name, int age){
// 這里的this.name代表成員變量name,“=”后面的name就代表構(gòu)造函數(shù)的參數(shù)name狼钮;
this.name = name;
this.age = age;
System.out.println("2個(gè)參數(shù)的構(gòu)造方法");
}
Dog(String name, int age, String color){
// (重點(diǎn))使用this調(diào)用構(gòu)造函數(shù)
// 格式:this(參數(shù)1,參數(shù)2);
// 它的作用是調(diào)用同一個(gè)類(lèi)中的其他構(gòu)造函數(shù)碳柱,
// this的()中有幾個(gè)參數(shù)捡絮,就會(huì)調(diào)用有幾個(gè)參數(shù)的構(gòu)造函數(shù)
this(name, age);
this.color = color;
System.out.println("3個(gè)參數(shù)的構(gòu)造方法");
}
void shout(){
// 這里的this就是一個(gè)Person的對(duì)象熬芜。
System.out.println("Dog's name is " + this.name);
}
}
2.新建一個(gè)名為Demo02.java的Java源文件:
class Demo02{
public static void main(String[] args) {
Dog dog1 = new Dog("小白", 1, "白色");
System.out.println("=============我是分割線(xiàn)=============");
Dog dog2 = new Dog("小黑", 3);
}
}