在Java中,強制類型轉換是將一個數據類型轉換為另一個數據類型的操作。有時候在使用繼承時,我們需要強制將子類轉換成父類或反之。下面我們分別介紹關于Java強制轉換子類和父類的方法。
強制轉換子類父類:
// 定義子類Human class Human { protected String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } // 定義子類Student class Student extends Human { private String grade; public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } } // 定義子類Teacher class Teacher extends Human { private String course; public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } } // 強制轉換子類為父類 Student student = new Student(); student.setName("Peter"); Human human = (Human) student; System.out.println(human.getName());
此時輸出的結果為:Peter,可以看到子類Student已經成功轉換成了父類Human。
強制轉換父類子類:
// 定義子類Human class Human { protected String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } // 定義子類Student class Student extends Human { private String grade; public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } } // 定義子類Teacher class Teacher extends Human { private String course; public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } } // 強制轉換父類為子類 Human human = new Student(); Student student = (Student) human; System.out.println(student.getGrade());
此時輸出的結果為null,因為此時human對象實際上是Student類型,但是在強制轉換時只是將Human類型強制轉換為Student類型,但實際上并沒有賦值,所以會出現空指針異常。
綜上所述,強制類型轉換可以幫助我們實現不同類型之間的轉換,但是在強制轉換時需要注意類型差異問題,以避免出現異常情況的發生。