其中您访问210取决于您使用访问它的东西的类型。 this
始终具有类的类型的方法或构造属于 —即在Fish
的方法/构造,this
是Fish
类型。在Shark'
的方法/构造函数中,this
的类型为Shark
。 (这里只有一个对象,它结合了Fish
和Shark
[没错,它确实有两个名称相同的单独的字段]的特征;我们谈论的是对它的引用类型。)
(注意,这是不同实例变量(如age
;又名“田”),比它是实例方法在Java中,方法是多态的,实例变量都没有。)
左右的时间内Fish
代码, this.age
是Fish
的age
。在Shark
代码中,this.age
是Shark
的代码age
。
例如为:
public class Fish {
int numberOfFins;
int age;
public Fish(int age) {
this.age=age; // Sets Fish#age
}
}
public class Shark extends Fish {
private int age;
public Shark(int age) {
super(age);
this.age=age; // Sets Shark#age
}
}
这并不只适用于this
,它适用于变量为好。看看下面main
(并注意我设置两个age
s到不同的值; Shark
的age
两倍Fish
的age
):当你出现在Java中,FWIW我要开始了
class Fish {
int numberOfFins;
int age;
public Fish(int age) {
this.age = age; // Sets Fish#age
}
}
public class Shark extends Fish {
private int age;
public Shark(int age) {
super(age);
this.age = age * 2; // Sets Shark#age
}
public static void main(String[] args) {
Shark s = new Shark(10);
Fish f = s;
System.out.println(f.age); // 10
System.out.println(s.age); // 20
}
}
**强**推荐使用任何几种典型的缩进和支架放置方式,**不要**上面的缩进和支架放置。我在回答中使用了其中的一个标准。 –