Tôi đã xem qua một số mã và không thể hiểu một khía cạnh nào đó của nó mặc dù tôi đã thực hiện một số tìm kiếm mở rộng!Tại sao dấu ngoặc đơn được sử dụng quanh tên lớp trong Java?
Câu hỏi của tôi là: tại sao các lớp học đôi khi được khai báo trong ngoặc đơn như trong mã sau?
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();
}
}
nơi tập trung của tôi là trên dòng mã này nói riêng:
Animal myAnimal = (Animal)myCat;
tôi tin rằng nó có cái gì để làm với thực tế là một lớp mở rộng khác nhưng không chắc chắn những gì các lớp được định nghĩa trong ngoặc biểu thị.
Bất kỳ trợ giúp nào về điều này đều được đánh giá cao. Cảm ơn bạn trước.
Đó là một typecast nhưng trong trường hợp này các typecast là không cần thiết - kể từ 'Cat' là một loại phụ của động vật. Các kiểu nhập là cần thiết khi bạn muốn chỉ định Siêu loại cho Loại phụ, ví dụ: 'Cat cat = (Cát) someAnimal;'. Nếu bạn làm điều này, bạn sẽ phải đảm bảo rằng trong Biến hoặc 'Cat' hoặc một loại phụ' Cat' được chứa, ví dụ: sử dụng 'instanceof'. Nếu không, Java sẽ ném một 'ClassCastException'. –
trong trường hợp cụ thể này, vì Cat mở rộng Animal và myAnimal đã là Animal, bạn không cần phải cast myCat vào Animal. Vì vậy, Animal myAnimal = myCat; sẽ làm việc. – Shark
ngoặc vuông '[]' - dấu ngoặc nhọn '{}' - dấu ngoặc đơn '()' - "dấu ngoặc nhọn" '<>' –