/*
1.区别成员变量和局部变量重名时,如下:
如果输出语句里面的num时,输出的时90,就近原则,
如果要输出10,就要用this.num
意思就是在一个方法内,如果有重名的变量,直接使用的就是局部变量,this.使用的就是成员变量
class Test {
public static void main(String[] args) {
Demo d = new Demo();
d.print();
}
}
class Demo {
int num = 10;
public void print(){
int num = 90;
System.out.println(num);
}
}
楼主,你好!很高兴回答您的问题!
this代表当前对象。意思是“我的”,楼主可以这么理解,不会有任何问题。
解决这个问题有两个方法,一个是通过在开发工具中,将源代码写下,源代码会自动将两个name用不同颜色标记,这样你一看就能区分它们,并一眼能看出它们的含义了。
好的,如果上面的方法还不能完全帮你解决问题,那么请听我用代码给您解释:代码如下:
public class Test05 {
public static void main(String[] args)
{
Person p1=new Person();
p1.age=18;
p1.Print(p1.age);
}
super和this super调用构造方法的作用:子类通过调用父类的构造方法,给父类的成员变量赋值 调用成员变量和成员方法 this.成员变量名 super.成员变量名 this.方法名(实际参数) super.方法名(实际参数) 调用构造方法 this调用本类的无参 this() this调用本类的有参 this(实际参数) super调用父类的无参 super() super调用父类的有参 super(实际参数) 注意事项:this和super调用构造方法,必须放在第一行 案例 class Fu { public String name = "我是爸爸"; } class Zi extends Fu{ public String name = "我是儿子"; public void show(String name){ System.out.println(name); //输出 呵呵 System.out.println(this.name); //输出 我是儿子 this:表示从本类成员位置开始找name属性,找到了就使用,找不到就从父类的成员位置找,找到了就使用,找不到就报错 System.out.println(super.name); //输出 我是爸爸 super:表示从父类的成员位置开始找,找到了就使用,找不到就报错 } } class Test{ public static void main(String[] args) { Zi zi = new Zi(); zi.show("呵呵"); } }