class MySuper {
public static void print() {
System.out.println("Inside MySuper.print()");
}
}
class MySubclass extends MySuper {
public static void print() {
System.out.println("Inside MySubclass.print()");
}
}
public class Main {
public static void main(String[] args) {
MySuper mhSuper = new MySub();
MySubclass mhSub = new MySubclass();
MySuper.print();
MySubclass.print();
((MySuper) mhSub).print();
mhSuper = mhSub;
mhSuper.print();
((MySubclass) mhSuper).print();
}
}
上面的代碼生成以下結(jié)果。
字段隱藏
類中的字段聲明(靜態(tài)或非靜態(tài))在其父類中隱藏具有相同名稱的繼承字段。
在字段隱藏的情況下,不考慮字段的類型及其訪問級(jí)別。
字段隱藏僅基于字段名稱。
class MySuper {
protected int num = 100;
protected String name = "Tom";
}
class MySub extends MySuper {
public void print() {
System.out.println("num: " + num);
System.out.println("name: " + name);
}
}
class MySub2 extends MySuper {
// Hides num field in MySuper class
private int num = 200;
// Hides name field in MySuper class
private String name = "Jack";
public void print() {
System.out.println("num: " + num);
System.out.println("name: " + name);
}
}
public class Main {
public static void main(String[] args) {
MySub fhSub = new MySub();
fhSub.print();
MySub2 fhSub2 = new MySub2();
fhSub2.print();
}
}
上面的代碼生成以下結(jié)果。
例子
以下代碼顯示了如何使用super關(guān)鍵字訪問超類的隱藏字段
class MySuper {
protected int num = 100;
protected String name = "Tom";
}
class MySub extends MySuper {
// Hides the num field in MySuper class
private int num = 200;
// Hides the name field in MySuper class
private String name = "Jack";
public void print() {
System.out.println("num: " + num);
System.out.println("super.num: " + super.num);
System.out.println("name: " + name);
System.out.println("super.name: " + super.name);
}
}
public class Main {
public static void main(String[] args) {
MySub s = new MySub();
s.print();
}
}
更多建議: