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.
Đỗ Trung Quân viết 18:18 ngày 30/09/2018

Bạn nào chọn A vào giải thích tại sao nhở

Nguyễn Minh Dũng viết 18:26 ngày 30/09/2018

Đã chọn A, vì linh cảm mách bảo thế :trollface:

Đỗ Trung Quân viết 18:22 ngày 30/09/2018

Không chơi với linh cảm :trollface:

minh tran viết 18:23 ngày 30/09/2018

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ủ.

Đỗ Trung Quân viết 18:27 ngày 30/09/2018

Đáp án thì thiếu gì. :trollface: đang để cho mọi người debat

boyMhs viết 18:27 ngày 30/09/2018

A. i = 3
Vì object o đã được Dropdown casting đến class Foo nên => i = 3

Đạt Đỗ viết 18:24 ngày 30/09/2018

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.

mmmm viết 18:25 ngày 30/09/2018

chủ thớt giải thích được chưa ạ, giải thích cho biết với ạ.

Đỗ Trung Quân viết 18:27 ngày 30/09/2018

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.

mmmm viết 18:16 ngày 30/09/2018

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 ạ.

Đỗ Trung Quân viết 18:24 ngày 30/09/2018

Vậy thì còn gì là kiểm tra kiến thức

Bài liên quan
0