關鍵字new的隱藏父類
new 兩個作用
- 創建物件
- 隱藏從父類繼承過來的「同名成員」
隱藏的結果,子類調不到父類的成員
創建物件/對象
1
Student reporter = new Student();
隱藏從父類繼承過來的「同名成員」
在子類中,與父類同名的方法上加上new
1
public new void SayHello() { ... }
沒有加上 new 關鍵字,程式會警告提示:
「Student.SayHello()’ 會隱藏繼承的成員 ‘Person.SayHello()’。
若本意即為要隱藏,請使用 new 關鍵字。」
1
2
3
4
5
6
7
8
9
public class Student {
//沒有加上new 關鍵字,程式會警告提示:....若本意即為要隱藏,請使用 new 關鍵字
public void SayHello() { ... }
}
//父類
public class Person {
public void SayHello() { ... }
}
結論
在繼承當中,儘量不要使用到 new 去隱藏父類的成員
子類也儘量不要寫跟父類同名的成員,不然會調用不到。