JavaRush /Blog Java /Random-VI /Mở rộng/thu hẹp các loại tham chiếu: các nguồn khác nhau ...
Core
Mức độ
Екатеринбург

Mở rộng/thu hẹp các loại tham chiếu: các nguồn khác nhau - cách giải thích khác nhau

Xuất bản trong nhóm
Chào buổi chiều. Có nghi ngờ có lỗi trong các bài giảng JavaRush. Cho có một lớp Parent và một lớp Child kế thừa từ nó, cho ra những dòng mã sau: Parent parent = new Child; Child child = (Child) parent; Theo bài giảng lớp 12, bài 1 (1. Đa hình và ghi đè), đoạn 5) (Type casting. ) dòng đầu tiên là thu hẹp, dòng thứ hai là mở rộng (trong bài giảng là bố mẹ, Cá voi là con thừa kế) Nhưng điều này không đúng. Mọi thứ hoàn toàn ngược lại. Ý nghĩa của những gì được mô tả rất rõ ràng: trong dòng đầu tiên, chúng ta đã tạo một đối tượng thuộc loại Child và chỉ giới hạn việc sử dụng nó trong các phương thức được mô tả trong lớp Parent. Nhưng đây là sự mở rộng và do đó sự giảm bớt như vậy xảy ra một cách ngầm định. Và trong tài liệu bổ sung cấp 10 có nói: Văn bản của bạn cần liên kết...
Tiện ích mở rộng có nghĩa là chuyển từ loại cụ thể hơn sang loại ít cụ thể hơn, tức là. chuyển từ con cái sang cha mẹ. Trong ví dụ của chúng tôi, việc chuyển đổi từ bất kỳ người thừa kế nào (Con, Child2) sang cha mẹ (Cha mẹ) là một phần mở rộng, một sự chuyển đổi sang một loại tổng quát hơn. Tương tự như trường hợp với các kiểu nguyên thủy, quá trình chuyển đổi này được thực hiện bởi chính JVM nếu cần thiết và vô hình đối với nhà phát triển, nghĩa là, nó không yêu cầu bất kỳ nỗ lực bổ sung nào, vì nó luôn thành công: bạn luôn có thể truy cập một đối tượng được tạo từ một người thừa kế theo loại cha mẹ của nó. Cha mẹ p1=Con mới(); Cha mẹ p2=Con mới2(); Trong cả hai dòng, các biến kiểu Parent được gán một giá trị thuộc kiểu khác, điều đó có nghĩa là xảy ra chuyển đổi. Vì đây là tiện ích mở rộng nên nó được thực hiện tự động và luôn thành công.
Ngược lại, dòng thứ hai trong ví dụ của tôi cũng theo phần bổ sung tương tự. vật liệu là sự thu hẹp đòi hỏi phải có chỉ dẫn rõ ràng về loại trong ngoặc đơn. Và trong bài giảng nó được hiểu là mở rộng, có lẽ sai, mong bạn giải thích. Tôi không muốn có quan điểm xung đột kép về việc truyền kiểu. Dưới đây là một đoạn của bài giảng, đoạn bài giảng vẫn còn nghi ngờ có sai sót trong các bài giảng (trước đó), tôi nên viết về điều này ở đâu? Tôi không tìm thấy nó trong Câu hỏi thường gặp.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION