Chúng tôi sử dụng thừa kế trong Java để tóm tắt hành vi tương tự trong một lớp cha và cho phép tất cả các lớp con kế thừa nó. Một trong những ưu điểm của điều này là, bây giờ chúng ta chỉ có một bản sao của phương thức để duy trì (tức là trong siêu lớp).Trình biên dịch java biết về các phương thức kế thừa như thế nào?
Class Animal
{
public void makeNoise()
{
}
public void sleep()
{
}
}
Class Cat extends Animal
{
// Override the makeNoise method
public void makeNoise()
{
}
}
Class someClass
{
public static void main(String args[])
{
Cat fluffy = new Cat();
fluffy.sleep();
}
}
Tôi cố gắng để hiểu làm thế nào trình biên dịch Java biết của phương pháp sleep()
cho một tham chiếu Cat
loại. Không thể có một bản sao của phương thức trong lớp con Cat
(nó đánh bại mục đích của nó trong lớp cha và cho phép tất cả các lớp con kế thừa từ nó). Thông tin này có được lưu trữ ở một số nơi khác không?
Khi biên dịch mã, nó tạo ra một loại cấu trúc heirarchy/dữ liệu lớp. Đúng ? – Chiseled
@Twister Có. Và khi các đối tượng được tạo ra trong thời gian chạy, chúng (hoặc ít nhất là máy ảo thời gian chạy) lưu trữ chúng là kiểu gì. – Jashaszun
Tôi đang nói về thời gian biên dịch không phải là thời gian chạy. – Chiseled