package initialization;
public class Dog {
public void jump() {
System.out.println("旋转跳跃,我闭着眼...");
}
public void run() {
Dog huangErGou = new Dog();
huangErGou.jump();
System.out.println("自由自在是方向...");
}
public static void main(String[] args) {
Dog g = new Dog();
g.run();
}
}
普通方法调用。
package initialization;
public class Dog {
public void jump() {
System.out.println("旋转跳跃,我闭着眼...");
}
public void run() {
//huangErGou = new Dog();
this.jump();
System.out.println("自由自在是方向...");
}
public static void main(String[] args) {
Dog g = new Dog();
g.run();
}
}
谁调用this,this就代表谁。
package initialization;
public class Dog {
public void jump() {
System.out.println("旋转跳跃,我闭着眼...");
}
public void run() {
//Dog huangErGou = new Dog();
jump();
System.out.println("自由自在是方向...");
}
public static void main(String[] args) {
Dog g = new Dog();
g.run();
}
}
同一个类里面的方法调用,this可以省略不写。
package initialization;
public class Apricot {
void pick() {
System.out.println("别怀疑,我就是个测试....");
}
void puk() {
pick();
}
public static void main(String[] args) {
Apricot apricot = new Apricot();
apricot.puk();
}
}
方法内部,如果是对同一个类下的另一个方法调用,则可以省略this关键字。
package initialization;
public class Dog {
public int age;
public Dog() {
int age = 0;
this.age = 6;
}
public static void main(String[] args) {
System.out.println(new Dog().age);
}
}
在构造器中使用this引用时,this总是引用该构造器正在初始化的对象。在上面的程序片段中,由于正在执行初始化的Dog对象的age成员变量设置为6,因此该构造器方法返回的所有对象的age成员变量都是6。
package initialization;
public class Dog {
public int age = 9;
public Dog g() {
age++;
return this;
}
public static void main(String[] args) {
Dog huangErGou = new Dog();
huangErGou.g()
.g().g();
System.out.println("皇儿狗的狗命的值是: " + huangErGou.age);
}
}
this当作对象的默认引用时,与访问普通引用变量并没有什么区别,也可以把this当成普通方法的返回值。
package initialization;
import java.awt.*;
public class Dog {
int petal = 0;
String s = "这次能记得住么?";
Dog(int petal) {
this.petal = petal;
System.out.println(petal);
}
Dog(String s) {
this.s = s;
System.out.println("狗的年龄为: " + s);
}
Dog(String s, int petal) {
this(petal);
this.s = s;
System.out.println("狗名&狗命");
}
Dog(){
this("huangErGou", 10);
System.out.println("默认构造器(无参数)");
}
void printPetal() {
System.out.println("petal + " + petal + " s " + s);
}
public static void main(String[] args) {
Dog huang = new Dog();
huang.printPetal();
}
}
在一个类有多个构造器的情况下,可以在一个构造器中调用另外一个构造器,以避免代码重复。
构造器中,this添加了参数,这就将产生对符合此参数列表的某个构造器的某个调用。
this调用构造器,能且只能调用一个,构造器的调用位置也有限制,必须将其置于最开始的位置。
this.s = s;
其中this.s代表对类成员变量的引用,s代表构造器方法参数形式。这么做是为了避免歧义性。