взгляд на этот кодJava Наследование и это ключевое слово
public class Machine {
public String name = "Machine";
public static int j = 5;
public void run() {
System.out.println("Machine is running");
System.out.println(this.name);
}
public void run2() {
System.out.println("Machine is running");
System.out.println(this.name);
this.run();
}
}
public class Computer extends Machine {
String name = "Computer ";
public void run() {
System.out.println("Computer is running");
}
}
public class Cpu extends Computer {
public String name = "Cpu ";
public Cpu() {
System.out.println("Constructor of cpu");
}
public void run() {
System.out.println("Constructor cpu is running");
System.out.println(this);
}
public void getComputerName() {
System.out.println(super.name + " Really?");
}
}
public class main {
public static void main(String[] args) {
Cpu c = new Cpu();
c.run2();
}
}
Печать:
Constructor of cpu
Machine is running
Machine
Constructor cpu is running
[email protected]
мой вопрос, почему, когда мы используем this
ключевое слово с функцией, он идет туда, где this
относится и активная функция , но когда мы используем его с полем, он просто идет с полем текущего класса? как в примере
Просто прочитайте это [SO ответ] (http://stackoverflow.com/a/3879343/225503). Поля не унаследованы –
Какой запутанный пример. – CKing
@DiegoFreniche Поля не являются полиморфными, но они наследуются (как бы унаследовали геттеры и сеттеры частного поля?). Они могут быть недоступны (например, частные поля), но они есть. – Pshemo