赞
踩
解决成员变量与局部变量名称冲突的问题
当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,即引用当前类的实例变量,即this关键字来区分局部变量和实例变量,以区分类的属性和方法中的参数。
public class Teacher { private String name; // 教师名称 private double salary; // 工资 private int age; // 年龄 } // 创建构造方法,为上面的3个属性赋初始值 public Teacher(String name,double salary,int age) { this.name = name; // 设置教师名称 this.salary = salary; // 设置教师工资 this.age = age; // 设置教师年龄 } public static void main(String[] args) { Teacher teacher = new Teacher("王刚",5000.0,45); System.out.println("教师信息如下:"); System.out.println("教师名称:"+teacher.name+"\n教师工资:"+teacher.salary+"\n教师年龄:"+teacher.age); } //输出结果 教师信息如下 教师名称:王刚 教师工资:5000.0 教师年龄:45
this.name表示当前对象具有的变量name.等号右边的name表示通过参数传递过来的值。
让类中一个方法访问类中的另一个方法和变量
_this 可以代表任何对象,当 this 出现在某个方法体中时,它所代表的对象是不确定的,但它的类型是确定的,它所代表的只能是当前类的实例。只有当这个方法被调用时,它所代表的对象才被确定下来,_谁在调用这个方法,this 就代表谁。
// 定义一个run()方法,run()方法需要借助jump()方法
//
public class sports{
String shoes;
static String water;
public void run() {
// 使用this引用调用run()方法的对象
this.jump();
this.shoes;
sports.water;
System.out.println("正在执行run方法");
}
}
大部分时候,一个方法访问该类中定义的其他方法、成员变量时加不加 this 前缀的效果是完全一样的。
public void run() {
jump();
shoes;
water;
System.out.println("正在执行run方法");
}
public class this3_person { int age; String name; int sex; String job; public this3_person(int age, String name, int sex){ this.age=age; this.name=name; this.sex=sex; } public this3_person(int age, String name, int sex, String job) { this(age, name, sex); this.job = job; } void display(){ System.out.println(age+name+sex+job); } }
test类
public class this3_test {
public static void main(String[] args) {
this3_person pe=new this3_person(2,"张三",0);
this3_person per=new this3_person(3,"李四",1);
pe.display();
per.display();
}
}
注意:this括号内的参数必须与成员变量的参数一致,不可自定义,而构造方法内的参数可以自定义
public class static_person {
public static String name="a";
public static void main(String[] args) {
String age="b";
System.out.println(name+age);//直接访问name
System.out.println(static_person.name+age);//通过 类名访问
static_person s=new static_person();
System.out.println(s.name);//通过类的实例去访
}
}
super.成员变量名;
super.成员方法名(参数表);
super(参数); //该语句必须是构造方法的第一条有效语句。
class Father{ private int x=10; public Father(int x) { //默认调用Father父类Object的空构造方法 this.x=x; } public void show() { System.out.println(this.x); } } class Son extends Father{ private int y=20; public Son(int x,int y) { super(x); //调用Father的构造方法 this.y=y; } public void show() { //子类覆写父类的同名方法 System.out.println(this.y); } public void print() { this.show();//调用Son的show方法 super.show();//调用father的show方法 } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。