30/09/2018, 16:16
Poll: Kiểm tra kiến thức Core Java - 1.02
Let’s have a discussion about this problem and get the answer here http://www.indiabix.com/online-test/java-programming-test/61
2. What will be the output of the program?
public class Test
{
public static void main(String args[])
{
class Foo
{
public int i = 3;
}
Object o = (Object)new Foo();
Foo foo = (Foo)o;
System.out.println("i = " + foo.i);
}
}
- A. i = 3
- B. Compilation fails.
- C. i = 5
- D. A ClassCastException will occur.
Bài liên quan
Bạn nào chọn A vào giải thích tại sao nhở
Đã chọn A, vì linh cảm mách bảo thế :trollface:
Không chơi với linh cảm :trollface:
chắc là A, bởi vì chỉ có A, D là khá hợp lý, nhưng D fthì oo thì cast từ object qua, trong khi mọi instance đều kế thừa từ object nên có thể cast được mà ko lỗi.
Cũng ko chắc lắm, có đáp án ko bác chủ.
Đáp án thì thiếu gì. :trollface: đang để cho mọi người debat
A. i = 3
Vì object o đã được Dropdown casting đến class Foo nên => i = 3
A vì dòng đầu o là đối tượng Foo
dòng 2 foo đối tượng kiểu Foo mà được sao chép từ o.
i là public được truy xuất từ ngoài.
dòng 2 là sao chép hay gán mình không chắc ăn.
chủ thớt giải thích được chưa ạ, giải thích cho biết với ạ.
Lớp Object là cha của tất cả các lớp trong java một cách trực tiếp hay gián tiếp. Vì vậy nó có khả năng lưu giữ reference của bất cứ object nào.
Ở đây có 2 việc xảy ra. Tạo 1 đối tượng “o” lưu giữa reference của object Foo và downcasting từ Object xuống Foo.
Tại sao phải cần downcasting?. Vì i là của riêng Foo, chúng ta muốn truy cập biến i trong class Foo. 1 lần nữa phải downcasting nó xuống subclass.
Dạ, em có 1 thắc mắc ngu xuẩn là vì sao
Foo foo = new Foo();
luôn mà lại phải lưu giữ reference làm gì vậy ạ, nó có tốn code, tốn thời gian khi chạy hơn không ạ.Vậy thì còn gì là kiểm tra kiến thức