2012-06-14 20 views

Trả lời

21

Đối với tất cả các mục đích thực tế, không có giới hạn về số lượng giao diện mà lớp có thể triển khai, nhưng java không cho phép bạn kế thừa từ nhiều lớp bậc trên. Tuy nhiên, nếu bạn thực sự muốn nitpick, bạn có thể nói rằng số lượng giao diện mà một lớp có thể triển khai bị ràng buộc bởi giá trị tối đa mà id giao diện có thể là bytecode java hoặc số lượng bộ nhớ mã bạn phải triển khai các giao diện này hoặc dung lượng ổ đĩa cứng để lưu trữ bytecode của bạn. Đây là những lý lẽ ngớ ngẩn. Rõ ràng, vì máy tính của bạn không có bộ nhớ vô hạn, thông lượng vô hạn và không gian mã vô hạn, chúng ta biết rằng có tối đa lý thuyết trên mọi thứ, giống như cách có một số lượng tối đa lý thuyết các dòng mã bạn có thể có trong một cái bình.

Nhưng nếu bạn thực sự thực sự muốn biết số lượng tối đa lý thuyết của giao diện một lớp có thể thực hiện, đó là 65535.

+0

Tôi đã có các lớp học được phân loại nhiều hơn một lớp. Và nó thật đẹp. – mre

+0

Vâng, python là một ngôn ngữ đẹp. –

+0

@mre Tôi không nghĩ rằng bạn hiểu rằng đó là những gì cô ấy nói hoạt động ಠ_ಠ –

5

Giới hạn là hơn thực tế hơn về kỹ thuật.

Giới hạn thực tế nằm trong hàng chục mã viết tay. Đối với mã được tạo ra, bạn có thể có nhiều hơn nữa, nhưng tôi nghi ngờ bạn có một cái gì đó sai với thiết kế của bạn nếu bạn có nhiều.

The limit in the file format is 65535.

Với các dự án lớn nhất còn lại ít hơn 10K lớp, vì vậy rất khó để tưởng tượng tại sao bạn sẽ muốn thực hiện nhiều giao diện trong một lớp.

17

Từ Java VM Đặc điểm kỹ thuật trên Limitations of the JVM:

Số superinterfaces trực tiếp của một lớp hoặc giao diện được giới hạn trong 65535 bởi kích thước của mặt hàng đó interfaces_count của cấu trúc ClassFile.

Đó là giới hạn duy nhất. Và đó là do cấu trúc của bytecode Java được biên dịch.

+0

Đặc tả ngôn ngữ Java! = Đặc điểm JVM. – dacwe

+0

@dacwe Ở đây hạn chế không phải là với ngôn ngữ Java nhưng với đặc tả ClassFile. – Jivings

+0

Chính xác! Java có thể được biên dịch sang một thứ khác ngoài bytecode ... – dacwe

-1

Không có giới hạn về số lượng giao diện mà lớp có thể triển khai.

2

lớp học của bạn có thể triển khai không giới hạn số Interfaces và một Interface có thể mở rộng không giới hạn số Interfaces nhưng thực hành tốt nhất là không triển khai quá nhiều giao diện.

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