62,614
社区成员
发帖
与我相关
我的任务
分享
public class TestThis {
public static void main(String[] args) {
JavaThis jt = new JavaThis("javathis");
// 由于 Student 属于 JavaThis 的内部类,因此要生成 Student
// 对象时需要在外部类对象的基础上进行 new
JavaThis.Student st = jt.new Student("student");
st.show("hello");
}
}
class JavaThis {
private String name;
private int age;
public JavaThis(String name) {
// 构造参数名与这个类的成员变量名相同,因此在赋值需要使用 this.name = name; 表示将
// 参数中的 name 值赋给 JavaThis 对象的 name 成员变量中去
// 如果不用这个 this. 就成了 name = name; 这样很明显就是不对的了
this.name = name;
}
public JavaThis(String name, int a) {
// 使用 this 函数?
// 这里指的是调用 JavaThis 这个类中带有 String 一个参数的构造方法,也就是先调用上面
// 那个构造
this(name);
// 这里由于参数名不叫 age,因此这里可以直接使用 age = a; 当然了也可以写成 this.age = a;
age = a;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void show() {
System.out.println("javathis name: " + name);
}
public class Student {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(String name) {
// 由于方法参数中有个 name,因此这里调用 name 是方法参数中的
System.out.println("my name: " + name);
// 同上,由于方法参数中有个 name,要调用自己类中的成员变量 name 时需要使用
// this.name,如果方法参数中名字不叫 name,那么这里使用 name 或者 this.name
// 都是同样的效果
System.out.println("my name: " + this.name);
// 由于 Student 不是静态的内部类,而且外部类中的 name 与这个类中的 name
// 名字一样,因此要引用外部类中的 name 时需要使用:<外部类名>.this.<外部类成员变量名>
// 如果直接写 this.name 的话,那表示是自己的 name
System.out.println("out name: " + JavaThis.this.name);
// 同理,由于这里想调用外部类中的 show 方法,如果直接调用或者用 this.show() 的话,
// 会被认为是调用自己的 show 方法,因此需要使用:<外部类名>.this.<外部类方法>
// 下面这个调用等价于:
// JavaThis outer = JavaThis.this;
// outer.show();
JavaThis.this.show();
}
}
}