上轉型對象是将子類的對象指派給父類的引用,形如:
SuperClass sup = new SubClass();
屬性,私有方法、靜态方法、final方法都是靜态綁定的,即編譯期确定的。
其他方法是動态綁定的,即虛拟機運作時确定。
後者才可能出現override的情況。
1 上轉型對象不能操作子類新增的成員變量(失掉了這部分屬性),不能使用子類新增的方法(失掉了一些功能)。
2 上轉型對象可以操作子類繼承或重寫的成員變量,也可以使用子類繼承的或重寫的方法。
3 如果子類重寫了父類的某個方法後,當對象的上轉型對象調用這個方法時一定是調用了這個重寫的方法,因為程式在運作時知道,這個上轉型對象的實體是子類建立的,隻不過損失了一些功能而已。
如圖示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuoXU2RmM5gTO2QDOxMTMfBzLcNTMvwFMxETMwIzLcRnbl1GajFGd0F2LcRXZu5ibkN3YukGavw1LcpDc0RHaiojIsJye.gif)