我遇到了一些代碼,並不能理解它的某個方面,雖然我已經做了一些廣泛的搜索!爲什麼在Java中的類名周圍使用括號?
我的問題是:爲什麼類有時會在括號內聲明,如下面的代碼?
public class Animal {
public static void hide() {
System.out.println("The hide method in Animal.");
}
public void override() {
System.out.println("The override method in Animal.");
}
}
public class Cat extends Animal {
public static void hide() {
System.out.println("The hide method in Cat.");
}
public void override() {
System.out.println("The override method in Cat.");
}
public static void main(String[] args) {
Cat myCat = new Cat();
Animal myAnimal = (Animal)myCat;
myAnimal.hide();
myAnimal.override();
}
}
在我的重點是這行代碼具體爲:
Animal myAnimal = (Animal)myCat;
我相信這事做的事實,一個類擴展另一個但我不確定括號內定義什麼類表示。
對此的任何幫助表示讚賞。先謝謝你。
這是一個類型轉換,但在這種情況下,類型轉換不是必須的 - 因爲'Cat'是Animal的一個子類型。當您想要將超級類型分配給子類型時,類型轉換是必要的,例如,貓貓=(貓)一些動物;'。如果你這樣做,你必須確保在變量中包含一個'Cat'或者一個子類型'Cat',例如,使用'instanceof'。否則,Java會拋出一個'ClassCastException'。 – 2012-07-30 19:43:57
在這個特殊情況下,因爲Cat擴展了Animal並且myAnimal已經是Animal,所以你不需要將myCat投射到Animal上。所以,Animal myAnimal = myCat;會工作。 – Shark 2012-07-30 19:52:37
括號'[]' - 大括號'{}' - 圓括號'()' - 「尖括號」<>' – 2012-07-30 21:20:05