l 对象的this引用
作用:
this关键字就是让类中一个方法,访问该类中的另一个方法或属性。
1、构造器中引用该构造器正在初始化的对象。
2、在方法中引用调用该方法的对象(哪个对象调用的方法,this就代表那个对象)。this在一个方法中使用this.方法,this作用就是引用该类中另一个方法中的对象(对象通常在main方法中)。this也可以省略不写,效果是一样的。但是对于static修饰的方法中就用类调用方法,不能用this。静态成员(带static的)不能访问非静态成员。
语法:
this.属性
this.方法
重载构造器中调用被包含的构造器初始化代码语法:
this(属性...)
例子:this调用方法。
代码:this用法
class Dog
{
public void jump()
{
System.out.println("jump");
}
public void run()
{
this.jump();
System.out.println("Dog");
}
}
public class DogTest
{
public static void main(String[] args)
{
Dog dog = new Dog(); //生成一个对象
dog.run(); //对象调用run方法,run方法中的this就知道是dog对象调用的它,所以run方法中的this就表示dog对象。使用this的前提条件就是先有一个对象,然后用对象去调用方法,方法中的this就是该对象了。
}
}
代码:this用法
class Dog
{
public void jump()
{
System.out.println("jump");
}
public void run()
{
this.jump();
System.out.println("Dog");
}
}
public class DogTest
{
public static void main(String[] args)
{
Dog dog = new Dog(); //生成一个对象
dog.run(); //对象调用run方法,run方法中的this就知道是dog对象调用的它,所以run方法中的this就表示dog对象。使用this的前提条件就是先有一个对象,然后用对象去调用方法,方法中的this就是该对象了。
}
}
//this在构造器中引用正在初始化的对象。
public class ThisTest
{
public int foo;
public ThisTest()
{
//如果给下面这句加上注释,那么这就是一个默认构造器。main中System.out.println打印的就是0,语法为:对象.属性
this.foo = 520; //this引用的是正在初始化的对象,因为初始化对象是用new 调用构造器来完成的。
}
public static void main(String[] args)
{
System.out.println(new ThisTest().foo);
}
}
public class ConstructorTest
{
public String name;
public int count;
public double weight;
public ConstructorTest(String name)
{
this.name = name;
}
public ConstructorTest(String name, int count)
{
this(name); //调用形式参数列表为name的重载构造器初始化代码。
this.count = count;
}
public ConstructorTest(String name, int count, double weight)
{
this(name,count); //调用形式参数列表为name,count的重载构造器初始化代码。
this.weight = weight;
}
public static void main(String[] args)
{
ConstructorTest con = new ConstructorTest("Nina");
System.out.println(con.name);
System.out.println(con.count);
System.out.println(con.weight);
System.out.println("");
ConstructorTest con1 = new ConstructorTest("Fengqiang",333);
System.out.println(con1.name);
System.out.println(con1.count);
System.out.println(con1.weight);
System.out.println("");
ConstructorTest con2 = new ConstructorTest("okay",333,1.2345);
System.out.println(con2.name);
System.out.println(con2.count);
System.out.println(con2.weight);
}
}
//从静态方法调用非静态方法出错
public class Test
{
public void info()
{
System.out.println("info");
}
public static void main(String[] args)
{
info();
}
}
在静态方法中访问普通方法的办法就是在静态方法中创建一个新的对象。在上面代码中新创建一个对象Test ok = new Test(); ok.info(); 这样就可以了。
//从静态方法调用非静态方法出错
public class Test
{
public void info()
{
System.out.println("info");
}
public static void main(String[] args)
{
info();
}
}
在静态方法中访问普通方法的办法就是在静态方法中创建一个新的对象。在上面代码中新创建一个对象Test ok = new Test(); ok.info(); 这样就可以了。