JavaScript is required

Khai báo nào sau đây sẽ không gây ra lỗi biên dịch?

A.

abstract int i;

B.

native MyMethod();

C.

default class MyClass {};

D.

abstract final class MyClass {};

Trả lời:

Đáp án đúng: D


Đáp án đúng là B. native MyMethod(); Giải thích: * **A. abstract int i;**: Khai báo biến `i` là `abstract` là không hợp lệ. `abstract` chỉ được dùng cho class và method, không dùng cho biến. * **B. native MyMethod();**: Khai báo phương thức `native` là hợp lệ. `native` được sử dụng để khai báo một phương thức được triển khai bằng ngôn ngữ khác (ví dụ: C, C++). Nó không có phần thân (body) và kết thúc bằng dấu chấm phẩy (;). * **C. default class MyClass {};**: `default` không phải là một từ khóa hợp lệ để khai báo một class. `default` chỉ có thể được sử dụng trong switch case hoặc trong interface để định nghĩa implementation mặc định cho một method. * **D. abstract final class MyClass {};**: Một class không thể vừa là `abstract` vừa là `final`. `abstract` có nghĩa là class này phải được kế thừa (inherited) và các phương thức `abstract` của nó phải được implement bởi lớp con. `final` có nghĩa là class này không thể được kế thừa. Do đó, hai modifier này mâu thuẫn nhau. Vì vậy, chỉ có khai báo `native MyMethod();` là không gây ra lỗi biên dịch.

Câu hỏi liên quan