2012-12-20 26 views
9

Given:tham khảo và Type Object thay đổi Java

public class X implements Z { 
public String toString() { return "I am X"; } 
public static void main(String[] args) { 
    Y myY = new Y(); 
    X myX = myY; 
    Z myZ = myX; 
    System.out.println(myZ); 
} 
} 
class Y extends X { 
public String toString() { return "I am Y"; } 
} 

interface Z {} 

loại tài liệu tham khảo của myZ là gì và các loại đối tượng mà nó tham chiếu là gì?

A. Loại tham chiếu là Z; loại đối tượng là Z.

B. Loại tham chiếu là Y; loại đối tượng là Y.

C. Loại tham chiếu là Z; loại đối tượng là Y.

D. Loại tham chiếu là X; loại đối tượng là Z.

Trong trường hợp này, tôi biết rằng loại đối tượng là chắc chắn Y, vì tôi có thể kiểm tra nó bằng phương thức .getClass(). Nhưng tôi không chắc chắn về cách kiểm tra loại tham chiếu là gì. Tôi giả định nó là Z nhưng giả định đó dựa trên cảm giác ruột và không logic.

Mọi người có thể giải thích về loại tham chiếu có thể là gì không và tại sao?

Cảm ơn bạn.

+0

Tôi sẽ đi với C, đối tượng được tạo bằng Y mới(); và myZ được khai báo là Z –

Trả lời

4

Các loại tài liệu tham khảo đối tượng được xác định tĩnh tại thời điểm kê khai của nó:

Z myZ = ... 

Do đó, các loại tài liệu tham khảo là Z, vì vậy "C" nên là câu trả lời đúng.

+0

ý nghĩa của 'loại tham chiếu' tổng thể là gì? Tại sao chúng ta cần nó? –

+2

Tham chiếu tuyên bố giao diện của đối tượng. nếu kiểu X có các phương thức getA(), getB() và getC(). Và loại Y chỉ có getA() và getB(), sau đó bằng cách thay đổi giao diện (kiểu tham chiếu) từ X thành Y, bạn chỉ có thể truy cập vào getA() và getB() ngay cả khi đối tượng là kiểu X. – NickL

2

Các đối tượng đã được tạo ra với new Y(); để loại đối tượng được Y

myZ được khai báo là Z (Z myZ = ...;) để loại tài liệu tham khảo là Z

Do đó, câu trả lời đúng là C

0

Đối tượng được tham chiếu đến loại Z

Z myZ = myX; 

nhưng ban đầu nó đã được tạo ra như kiểu Y,

Y myY = new Y(); 

Do đó, rõ ràng là ans C.

0

Tôi biết nó là bối rối vì câu trả lời sai được đánh dấu là sự thật một; Tôi cũng đã gặp nó. Sự thật là như họ nói, tham chiếu là kiểu Z và kiểu đối tượng là Y, vì vậy C là câu trả lời đúng.

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