+2

Java SE 8 Oracle Certified Associate 1Z0-808 - #12

1. Câu hỏi

2. Phân tích

Yêu cầu bài toán là tìm ra lỗi cú pháp trong hàm print(). Mặc dù các IDE có thể báo lỗi cho chúng ta trong quá trình lập trình, nhưng nếu chúng ta hiểu rõ bản chất thì vẫn tốt hơn
Nhìn vào code trong hàm, t có thể thấy phần này kiểm tra về access modifier của Java.

Mình hay dựa vào bảng này để so sánh: image.png

Để dễ nhớ hơn thì mình tự tạo ra cách nhớ riêng mình: Mức độ access tăng dần từ private -> default (no modifier) -> protected -> public

  • private chỉ access trong class đó.
  • default có thêm access khi cùng package
  • protected có thêm access ở class con (sub-class) mặc dù có thể nằm khác package.
  • public là mọi nơi

Tiếp tục đi vào source code:
class A là public trong package com.udayan.oca, Không có lỗi khi access class A bên ngoài com.udayan.oca package.
class B nằm trong package com.udayan.oca.test, kế thừa class A. Không có lỗi trong class này

System.out.println(obj.i1);
  • Field i1public trong class A, so code System.out.println(obj.i1); không có lỗi.
System.out.println(obj.i2);
  • Field i2 là protected nó chỉ có thể được access thông qua instance của class B, chứ không thế access qua instance của class A. vậy obj.i2 là lỗi lúc compile.
 System.out.println(this.i2); //Line 10
 System.out.println(super.i2); //Line 11
  • Vì class B kế thừa i2 từ class A, bên trong class B, chúng ta có thể truy cập this.i2 hoặc super.i2 mà không gây lỗi.

Đáp án: image.png

3. Kết luận

Bạn có thể gõ code vào IDE để chạy lại và kiểm tra Source cho câu hỏi


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí