2010-04-07 44 views
8

Theo, http://www.freshvanilla.org:8080/display/www/Java+Interview+QuestionsCó phải là một lớp trong java?

Dưới,

Những lớp là lớp cha của mọi tầng lớp ?

null có vẻ là câu trả lời.

tôi thấy rằng

new Object().getClass().getSuperClass() 

xác minh câu trả lời là đúng. Nhưng không thể được coi là một lớp học? tôi thấy tất cả các loại dữ liệu nguyên thủy được thể hiện dưới dạng đối tượng Class từ java [chấm] sun.com/j2se/1.4.2/docs/api/java/lang/Class.html

+1

Tôi chỉ đơn giản là yêu đối tượng mới của bạn(). GetClass(). GetSuperClass() == null'. –

+2

Bất cứ ai đã viết trang đó thực sự không biết họ đang nói về cái gì. Tôi sẽ giảm giá cả. Đối với câu hỏi ban đầu, nó phải được viết lại "lớp nào là siêu lớp của mỗi lớp ngoại trừ chính nó?" –

+0

@KevinBourrillion +1 cho nhận xét của bạn vì đề xuất câu hỏi ban đầu tốt hơn nên được viết lại thành "Lớp nào là siêu lớp của mỗi lớp ngoại trừ chính nó?" – sactiw

Trả lời

28

Đó là một câu hỏi phỏng vấn khó xử. Tôi khá chắc chắn câu trả lời mà họ đang tìm kiếm là Object, chứ không phải null. null không phải là một lớp học. Điều đó nghĩa là gì khi getSuperClass trả về null là "không có siêu lớp". null chỉ đơn thuần là một giá trị đặc biệt mà tham chiếu có thể có. Nếu null là một lớp, bạn sẽ có thể khởi tạo các đối tượng thuộc loại null. Cũng không có ý nghĩa khi chỉ định null cho một tham chiếu của bất kỳ loại nào khác.

+0

Cảm ơn bạn đã xóa nó. – Somerandomeguy

1

Hãy nhớ rằng lớp Classchính nó một lớp học. Vì vậy, khi bạn gọi số c.getClass(), bạn sẽ nhận lại một cá thể của lớp Class. Do đó, vì có không phải là cấp siêu của Object, phương pháp getSuperClass() không thể trả lại bất kỳ thứ gì để nó trả lại null.

5

Trong java java.lang.Object là cha (gốc) của tất cả các đối tượng khác và không có người tiền nhiệm.

Null không phải là một đối tượng chút nào cho thấy rằng không có đối tượng nào có sẵn (tham chiếu null).

cũng JLS Chapter 4

1

Xem Bạn không thể cast đối tượng Null để loại nguyên thủy khác và bạn không kế thừa từ nó. Lớp cấp cao nhất trong Java là Object.

0

Đối tượng là lớp siêu của tất cả các lớp và null là tham chiếu đối tượng

6

Tôi nghĩ lớp Object là câu trả lời.

từ javadoc.

new Object().getClass().getSuperClass() 

Nếu lớp này đại diện cho lớp Object, giao diện, loại nguyên thủy hoặc khoảng trống, thì trả về giá trị rỗng. nó không có nghĩa là null là supperclass.

Nếu null là một lớp, tôi nghĩ rằng nó phải là Null. null không phải là một lớp học.

+0

+1 để đề cập đến "Nếu null là một lớp, nó phải được gọi là Null" :-) Tôi tin ở đây bạn có nghĩa là lớp 'Lớp' là câu trả lời. Dường như phương thức getSuperClass() có trong lớp 'Class' trả về lớp cha của lớp được đại diện bởi đối tượng được tham chiếu và nếu lớp được đại diện bởi đối tượng đó là lớp Object, giao diện, kiểu nguyên thủy, hoặc void, thì getSuperClass này () phương thức đơn giản trả về null. – sactiw

0

Câu hỏi kém. Chỉ có câu trả lời 'đơn giản' là chính xác như một câu trả lời cho câu hỏi. Những người khác chỉ là khó hiểu.

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