5 回答
TA貢獻1863條經驗 獲得超2個贊
在 Java 中有一個 和 的概念。上嵌意味著轉換為超類型,而下嵌意味著轉換為子類型。upcastingdowncasting
每當有關系時,你都可以毫無傷害地進行升級。但需要注意的是低調。Is-A
例如,您有 和 因為 兩者 都是 類,因此 People 數組可以存儲這兩個?,F在,當你做編譯器不知道它實際上是員工,因為有相等的概率,可以經理作為經理類也擴展了人。因此,您需要顯式提供一個強制轉換,告訴編譯器您知道自己在做什么,并且無需給出任何編譯錯誤。但是,如果在運行時出現任何問題,則將拋出a。People arrayEmployeeManagerextendsPeopleEmployee ref2 = people[1];ClassCastException
TA貢獻1830條經驗 獲得超9個贊
它不是在沒有強制轉換的情況下編譯的,因為編譯器不知道它是 .people[1]Employee
來自 Java 教程。鑄造對象:
我們可以告訴編譯器,我們承諾通過顯式轉換來分配給它。
Employeepeople[1]此強制轉換將插入一個分配了 的運行時檢查,以便編譯器可以安全地假定 該檢查是 。如果不是 在運行時,將引發異常。
people[1]Employeepeople[1]Employeepeople[1]Employee
查看更多 Java 中的強制轉換變量
TA貢獻1828條經驗 獲得超3個贊
變量的類型為 。 ( - 實例也可以是擴展的子項 )。peoplePersonPerson[] people = Person[5];type[] people = new instancetype
這里編譯器看到,你需要說在編譯器它也可以(導致擴展)通過轉換。Employee ref2 = people[1];peoplePersonEmployeeEmployeePerson
你可以閱讀更多,關于這個主題,在這里: https://www.baeldung.com/java-type-casting
TA貢獻1854條經驗 獲得超8個贊
變量的類型為 。 ( - 實例也可以是擴展的子項 )。peoplePersonPerson[] people = Person[5];type[] people = new instancetype
這里編譯器看到,你需要說在編譯器它也可以(導致擴展)通過轉換。Employee ref2 = people[1];peoplePersonEmployeeEmployeePerson
你可以閱讀更多,關于這個主題,在這里: https://www.baeldung.com/java-type-casting
添加回答
舉報
