Java怎么正確的向上轉(zhuǎn)型與向下轉(zhuǎn)型

小億
83
2024-03-01 17:27:18

在Java中,向上轉(zhuǎn)型和向下轉(zhuǎn)型是用來(lái)處理父類與子類之間的關(guān)系的。

  1. 向上轉(zhuǎn)型:將一個(gè)子類的對(duì)象轉(zhuǎn)換為父類的對(duì)象。這樣可以實(shí)現(xiàn)父類引用指向子類對(duì)象,實(shí)現(xiàn)多態(tài)。向上轉(zhuǎn)型是自動(dòng)進(jìn)行的,無(wú)需強(qiáng)制轉(zhuǎn)換。
class Animal {
   public void eat() {
      System.out.println("Animal is eating");
   }
}
class Dog extends Animal {
   public void eat() {
      System.out.println("Dog is eating");
   }
}

public class Main {
   public static void main(String[] args) {
      Animal animal = new Dog(); // 向上轉(zhuǎn)型
      animal.eat(); // 輸出 Dog is eating
   }
}
  1. 向下轉(zhuǎn)型:將一個(gè)父類的對(duì)象轉(zhuǎn)換為子類的對(duì)象。需要使用強(qiáng)制類型轉(zhuǎn)換操作符,并且需要進(jìn)行類型檢查以避免ClassCastException異常。
class Animal {
   public void eat() {
      System.out.println("Animal is eating");
   }
}
class Dog extends Animal {
   public void eat() {
      System.out.println("Dog is eating");
   }
   public void bark() {
      System.out.println("Dog is barking");
   }
}

public class Main {
   public static void main(String[] args) {
      Animal animal = new Dog(); // 向上轉(zhuǎn)型
      if (animal instanceof Dog) {
         Dog dog = (Dog) animal; // 向下轉(zhuǎn)型
         dog.bark(); // 輸出 Dog is barking
      }
   }
}

需要注意的是,向下轉(zhuǎn)型時(shí)一定要進(jìn)行類型檢查,以避免出現(xiàn)ClassCastException異常。

0