JavaScript is required

Khi biên dịch lớp Main có lỗi biên dịch không? Nếu có là lỗi nào?
package java.school;
public class Student {}
--
package java.test;
public class Main {
public static void main(String[] args) {
Student s = new Student();
}
}

A.
Có lỗi biên dịch: can not find symbol test.Student
B.
Không có lỗi biên dịch.
C.
Có lỗi biên dịch: Add import java.school.Student
D.
Có lỗi biên dịch: can not find constructor Student() for Student.
Trả lời:

Đáp án đúng: A


Đoạn code trên có lỗi biên dịch. Lớp `Student` được định nghĩa trong package `java.school`, trong khi lớp `Main` nằm trong package `java.test`. Trong phương thức `main` của lớp `Main`, chúng ta cố gắng tạo một đối tượng `Student` bằng cách sử dụng `new Student()`. Tuy nhiên, vì lớp `Main` và `Student` nằm trong các package khác nhau và lớp `Main` không import lớp `Student`, trình biên dịch sẽ không thể tìm thấy lớp `Student`. Do đó, sẽ có lỗi biên dịch. Đáp án A không chính xác hoàn toàn, vì lỗi chính xác là "cannot find symbol Student", chứ không phải "test.Student". Đáp án B sai vì có lỗi biên dịch. Đáp án C chính xác. Để khắc phục lỗi này, ta cần thêm dòng `import java.school.Student;` vào đầu file `Main.java`. Đáp án D sai vì lỗi không phải do thiếu constructor mà là do không tìm thấy class.

Câu hỏi liên quan