2012-01-12 40 views
5

tôi đang tạo ra lớp S4 trong R.Tại sao không nên sử dụng đa thừa kế?

Tôi đọc trong https://github.com/hadley/devtools/wiki/S4

Lưu ý rằng S4 hỗ trợ đa kế thừa, nhưng điều này nên được sử dụng với hết sức thận trọng vì nó làm cho phương pháp tra cứu cực kỳ phức tạp.

Tra cứu phương pháp là gì và tại sao phức tạp hơn với nhiều lần kế thừa?

+0

Chỉ cần đảm bảo bạn biết nhiều tài nguyên S4: http://stackoverflow.com/questions/4143611/sources-on-s4-objects-methods-and-programming-in-r –

Trả lời

10

Khi bạn nhập f(x), với x thuộc một số lớp (nói, A, B và C), máy tính phải quyết định phương thức nào để gọi (01) "tra cứu phương pháp".

Nhiều kế thừa thường đặt ra các vấn đề khi mã phát triển.

Hãy tưởng tượng bạn đã viết hai lớp cơ sở A và B và lớp C kế thừa từ cả hai. Mọi thứ đều hoạt động tốt. Một vài tháng sau, một nhà phát triển, người sử dụng lớp A, và hoàn toàn không biết các lớp B và C (anh ta không cần chúng), thêm một phương pháp mới vào lớp A. Không biết anh ta, đã có một phương pháp với cùng tên trong lớp B. Điều gì xảy ra với các đối tượng của lớp C? Liệu phương pháp từ A hoặc B có được sử dụng không? Trong một số ngôn ngữ, mã có thể bị lỗi, trong các ngôn ngữ khác, bạn có thể có hành vi không xác định và một lỗi rất khó nắm bắt.

+3

Tôi nghĩ rằng giải thích của bạn là một chút bối rối về phương pháp s4 - chúng thuộc về các hàm, không phải các lớp. – hadley

Các vấn đề liên quan