ÔN OOP
1. Đối tượng (Object)
Định nghĩa: Đối tượng thực thể trong thế gii thực hoặc một thực thể trong một
hệ thống nào đó.
dụ: Một con mèo, một chiếc xe, một danh sách sinh viên, v.v.
2. Lớp (Class)
Định nghĩa: Lớp khuôn mẫu hoặc bản thiết kế từ đó các đối tượng được tạo
ra. Nó định nghĩa các thuộc tính (biến) và phương thức (hàm) mà mỗi đối tượng
của lớp đó sẽ chứa.
dụ: Class Cat thể thuộc tính age, color phương thức meow().
3. Kế thừa (Inheritance)
Định nghĩa: Kế thừa cho phép một lớp (lớp con) kế thừa các thuộc tính phương
thức từ mt lớp khác (lớp cha). Mục tiêu để tái sử dụng code, tránh việc viết lại
code.
dụ: Lớp Animal thể lớp cha của lớp Cat, với Cat kế thừa các thuộc tính
phương thức từ Animal.
4. Đa hình (Polymorphism)
Định nghĩa: Đa hình cho phép các đối tượng được xem xét một thực thể của
nhiu lớp khác nhau.
Ví dụ: Một đối tượng Cat có thể được xem như một Animal. Pơng thức
makeSound() thể được triển khai khác nhau giữa các lớp Cat Dog nhưng
cùng một interface Animal có thể gọi makeSound().
5. Đóng gói (Encapsulation)
Định nghĩa: Đóng gói là cơ chế của việc che giu các chi tiết triển khai bên trong
mt lớp chỉ cho phép truy cập đến các thành phần qua một interface công khai.
dụ: Sử dụng các phương thức getter setter để truy cập cập nhật các thuộc
tính của một lớp.
6. Trừu tượng (Abstraction)
Định nghĩa: Trừu tượng chế để ẩn đi các chi tiết cụ thể chỉ hiển thị các tính
năng cần thiết đến người dùng.
dụ: Sử dụng các lớp trừu tượng hoặc interface để định nghĩa mt bộ khung cho
các lớp khác theo dõi.
Câu 1: Đâu đặc điểm của Lập trình Hướng Đối Tượng (OOP)?
A. i sử dụng ngun
B. Tập trung vào logic thay dữ liệu
C. Mã nguồn dễ đọc quản
D. Tất cả các phương án trên
Câu 2: Trong Java, từ khóa nào được sử dụng để kế thừa từ một lớp cha?
A. super
B. this
C. class
D. extends
Câu 3: Đóng gói (Encapsulation) trong OOP giúp làm ?
A. ng cường tính bảo mật cho dữ liệu
B. Cho phép truy cập trực tiếp vào các thuộc tính của lớp
C. Giảm thiểu tính kế thừa
D. Tạo các phương thức tĩnh
Câu 4: Trong các phương thức sau, đâu dụ về Đa hình (Polymorphism)?
A. Một lớp hai phương thức với cùng n nhưng số lượng tham số khác nhau
B. Một lớp hai phương thức với cùng n số ng tham số nhưng kiểu d
liu tham số khác nhau
C. Cả A và B đều đúng
D. Cả A B đều sai
Câu 5: Khi nào một lớp nên được đánh dấu abstract?
A. Khi nó chứa ít nhất một phương thức abstract
B. Khi tất cả phương thức trong lớp đều abstract
C. Khi lớp không chứa bất kỳ phương thức abstract nào
D. Khi lớp được thiết kế để kế thừa bởi các lớp khác
Câu 6: Trong Java, interface khác với lớp abstract như thế nào?
A. Interface chỉ chứa phương thức abstract, trong khi lp abstract thể chứa
phương thức không phải abstract
B. Interface th chứa thuộc tính, trong khi lớp abstract không th
C. Interface lớp abstract đều không thể chứa phương thức thực thi
D. Không sự khác biệt nào giữa interface và lớp abstract
Câu 7: Trong OOP, thuật ngữ "đa kế thừa" nghĩa ?
A. Một lớp kế thừa từ nhiều lớp cha
B. Nhiều lớp kế thừa từ một lớp cha
C. Một lớp kế thừa từ một lớp cha và nhiu interface
D. Không khái niệm "đa kế thừa" trong OOP
Câu 8: Tại sao phương thức getter setter li quan trọng trong đóng gói?
A. Chúng cho phép truy cập sửa đổi các thuộc tính từn ngoài lớp một cách an
toàn
B. Chúng tự động tạo ra các thuộc tính cho lớp
C. Chúng làm ng hiệu suất của chương trình
D. Chúng cho phép hóa dữ liu
Câu 9: Xem xét đoạn Java sau:
public class Animal {
public void sound() {
System.out.println("The animal makes a sound");
}
}
public class Dog extends Animal {
@Override
public void sound() {
System.out.println("The dog barks");
}
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.sound();
}
}
Khi chạy đoạn trên, đầu ra (output) sẽ ?
A. The animal makes a sound
B. The dog barks
C. Compile-time error
D. Runtime error
Câu 10: Xem xét đoạn Java i đây:
public interface Flyable {
void fly();
}
public class Bird implements Flyable {
public void fly() {
System.out.println("Bird is flying");
}
}
public class Airplane implements Flyable {
public void fly() {
System.out.println("Airplane is flying");
}
public static void main(String[] args) {
Flyable object = new Bird();
object.fly();
object = new Airplane();
object.fly();
}
}
Kết quả khi chạy đoạn này sẽ ?
A. Bird is flying
B. Airplane is flying
C. Bird is flying
Airplane is flying
D. Compile-time error
Câu 11: Đánh giá đoạn code sau:
public abstract class Shape {
abstract void draw();
}
public class Circle extends Shape {
void draw() {
System.out.println("Drawing Circle");
}
}
public class Test {
public static void main(String[] args) {
Shape shape = new Circle();
shape.draw();
}
}
Phát biểu nào sau đây đúng?
A. Đoạn sẽ gây ra lỗi biên dịchlớp Shape abstract không thể được khởi
tạo.
B. Đoạn mã sẽ in ra "Drawing Circle".
C. Đoạn sẽ gây ra lỗi biên dịch phương thức draw() trong lớp Circle phải
được đánh dấu là @Override.
D. Đoạn sẽ không in ra gì vì lớp Circle không cung cấp trin khai cụ thể cho
phương thức draw().
Câu 12: Xem xét đoạn Java sau:
class Vehicle {
protected String brand = "Ford";
public void honk() {
System.out.println("Tuut, tuut!");
}
}
class Car extends Vehicle {
private String modelName = "Mustang";
public static void main(String[] args) {
Car myCar = new Car();
myCar.honk();
System.out.println(myCar.brand + " " + myCar.modelName);
}
}
Khi chạy đoạn trên, đầu ra (output) sẽ ?
A. Tuut, tuut!
Ford Mustang
B. Compile-time error
C. Tuut, tuut!
D. Runtime error
Câu 13: Câu nào sau đây tả chính xác nhất về đóngi (Encapsulation)?
A. chế che giấu dữ liệu n trong một đối tượng, chỉ cho phép truy cập qua các
phương thức của đối tượng đó.
B. Kỹ thuật cho phép một đối tượng kế thừa thuộc tính pơng thức từ một đối
tượng khác.
C. Khả năng của một đối tượng để thực hiện nhiều hình thái.
D. Định nghĩa mt bản mẫu cho các đối tượng, tả thuộc tính phương thức
của chúng.
Câu 14: Từ khóa nào sau đây được sử dụng để áp dụng đa hình trong Java?
A. final
B. static
C. override
D. private
Câu 15: Trong Java, một lớp thể trin khai bao nhiêu interface?
A. Chỉ một
B. Hai
C. Bất k số lượng nào
D. Không có, Java không hỗ trợ interfaces
Câu 16: Khi nào bạn s sử dụng một lớp trừu tượng (abstract class)?
A. Khi muốn cung cấp một lớp sở từ đó các lớp khác thể kế thừa triển
khai các phương thức abstract.
B. Khi muốn tạo một đối tượng cụ thể.
C. Khi tất cả các phương thức trong lớp đều static.
D. Khi muốn ngăn chặn kế thừa.
Câu 17: Đoạn code sau sẽ in ra gì khi được thực thi?
class A {
void method() {
System.out.println("Class A");
}
}
class B extends A {
void method() {
System.out.println("Class B");
}
public static void main(String[] args) {
A obj = new B();
obj.method();
}
}
A. Class A
B. Class B
C. Compile-time error
D. Runtime error
Câu 18: Điềusẽ xảy ra nếu bạn cố gắng truy cập một biến chỉ được định nghĩa
trong phạm vi của một phương thức?
A. Biến sẽ được truy cập bình thường.
B. Một giá trị mặc định của biến sẽ được truy cập.
C. Một lỗi biên dịch sẽ xảy ra.
D. Biến sẽ tự động được chuyn thành biến toàn cục.
Câu 19: Trong Java, từ khóa nào cho phép bạn ghi đè phương thức ca lớp cha
trong lớp con?
A. super
B. this
C. override
D. extends
Câu 20: Tại sao từ khóa final lại được sử dụng trong Java?
A. Để ngăn chặn thừa kế.
B. Để tạo ra các hằng số không thay đổi giá trị sau khi đã được gán.
C. Để đánh dấu một lớp không thể bị kế thừa.
D. Cả A B đều đúng.
Câu 21: Phương thức nào sau đây KHÔNG phải mộtdụ về tải phương thức
(method overloading)?
A. Phương thức với cùng tên nhưng số lượng tham số khác nhau.
B. Phương thức với cùng tên số ng tham số nhưng kiểu dữ liu tham số khác
nhau.
C. Pơng thức với cùng tên, số ng kiểu dữ liu tham số nhưng kiểu trả về
khác nhau.
D. Cả A, B, C đều là ví d về tải phương thức.
Câu 22: Một interface trong Java có thể kế thừa từ một interface khác không?
A. Có, nhưng chỉ một interface duy nhất.
B. Có, thể kế thừa từ nhiều interface.
C. Không, interfaces không thể kế thừa.
D. Không, interface chỉ th triển khai từ các lớp cụ thể.
Câu 23: Trong Java, từ khóa nào dưới đây không thể được sử dụng để khai báo một
biến?
A. final
B. static
C. public
D. private
Câu 24: Điềuxy ra khi một lớp Java triển khai một interface nhưng không cung
cấp cài đặt cho tất cả các phương thức của interface đó?
A. Chương trình sẽ biên dch thành công.
B. Lp phải được đánh dấu abstract.
C. Một ngoại lệ sẽ được ném ra khi chạy chương trình.
D. Chương trình sẽ báo lỗi biên dịch.
Câu 25: Một lớp thể triển khai cùng lúc cả interfaces kế thừa từ một lớp khác
trong Java không?
A. Có, nhưng chỉ kế thừa từ một lớp triển khai một interface.
B. Có, lớp thể kế thừa từ một lớp triển khai nhiều interfaces.
C. Không, lp chỉ thể kế thừa hoặc triển khai interfaces.
D. Không, lớp không thể kế thừa từ bất kỳ lớp nào khi đã triển khai một interface.
Câu 26: Phương thức equals(Object obj) được sử dụng để làm gì trong Java?
A. So sánh vị trí bộ nhớ của hai đối tượng.
B. Kiểm tra xem hai đối tượng cùng giá tr thuộc tính không.
C. Đảm bảo hai đối tượng có cùng kiểu dữ liệu.
D. So sánh địa chỉ IP của hai máy tính.
Câu 27: Trong Java, một lớp thể tr thành final không?
A. Có, điều này ngăn chặn lớp đó được kế thừa.
B. Không, chỉ phương thức mới thể final.
C. Có, nhưng chỉ nếu nó không bất kỳ phương thức final nào.
D. Không, từ khóa final chỉ áp dụng cho biếnphương thức.
Câu 28: Đoạn code sau đây sẽ in ra gì?
public class Test {
private int count = 9;
public void increment() {
count++;
}
public static void main(String[] args) {
Test obj = new Test();
obj.increment();
System.out.println(obj.count);
}
}
A. 9
B. 10
C. Lỗi biên dịch
D. 0
Câu 29: Xem xét đoạn code sau, đầu ra sẽ gì?
class Shape {
public void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
public void draw() {
System.out.println("Drawing a circle");
}
public static void main(String[] args) {
Shape s = new Circle();
s.draw();
}
}
A. Drawing a shape
B. Drawing a circle
C. Lỗi biên dịch
D. Lỗi thời gian chạy
Câu 30: Đoạn code sau đây minh họa khái nim gì?
interface Pet {
void cuddle();
}
class Dog implements Pet {
public void cuddle() {
System.out.println("Dog loves cuddling");
}
}
A. Kế thừa
B. Đóng gói
C. Đanh
D. Interface
Câu 31: Output của đoạn code sau gì?
public class Main {
public static void main(String[] args) {
String s1 = "Java";
String s2 = new String("Java");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
A. true true
B. false false
C. true false
D. false true
Câu 32: u hi sau đề cập đến khái niệm nào trong Java?
public abstract class Animal {
public abstract void sound();
}
A. Đóng gói
B. Trừu tượng
C. Đanh
D. Kế thừa
Câu 33: Đoạn code sau biểu thị đa hình như thế nào?
abstract class Shape {
abstract void draw();
}
class Rectangle extends Shape {
void draw() {
System.out.println("drawing rectangle");
}
}
class Circle extends Shape {
void draw() {
System.out.println("drawing circle");
}
}
class TestPolymorphism {
public static void main(String[] args) {
Shape s;
s = new Rectangle();
s.draw();
s = new Circle();
s.draw();
}
}
A. Thông qua việc sử dụng phương thức abstract
B. Thông qua việc ghi đè phương thc
C. Thông qua việc tạo đối tượng của lớp con
D. Tất cả các phương án trên
Câu 34: Khi nào một lớp nên được đánh dấu final?
final class Example {
void display() {
System.out.println("This is a final class.");
}
}
A. Khi bạn muốn ngăn chặn lớp được kế tha
B. Khi tất cả các phương thức trong lớp static
C. Khi lớp không chứa bất kỳ phương thức abstract nào
D. Khi bạn muốn lớp đó có thể được kế thừa bởi bất kỳ lớp nào
Câu 35: Đoạn code sau đây sẽ in ra gì?
public class Test {
public static void main(String[] args) {
int x = 1;
int y = 2;
int z = x++;
int a = ++y;
if (z == a) {
System.out.println("Hello!");
} else {
System.out.println("Goodbye!");
}
}
}
A. Hello!
B. Goodbye!
C. Lỗi biên dịch
D. Không gì được in ra

Preview text:

ÔN OOP 1. Đối tượng (Object)
Định nghĩa: Đối tượng là thực thể trong thế giới thực hoặc một thực thể trong một hệ thống nào đó.
Ví dụ: Một con mèo, một chiếc xe, một danh sách sinh viên, v.v. 2. Lớp (Class)
Định nghĩa: Lớp là khuôn mẫu hoặc bản thiết kế mà từ đó các đối tượng được tạo
ra. Nó định nghĩa các thuộc tính (biến) và phương thức (hàm) mà mỗi đối tượng của lớp đó sẽ chứa.
Ví dụ: Class Cat có thể có thuộc tính là age, color và phương thức là meow(). 3. Kế thừa (Inheritance)
Định nghĩa: Kế thừa cho phép một lớp (lớp con) kế thừa các thuộc tính và phương
thức từ một lớp khác (lớp cha). Mục tiêu là để tái sử dụng code, tránh việc viết lại code.
Ví dụ: Lớp Animal có thể là lớp cha của lớp Cat, với Cat kế thừa các thuộc tính và phương thức từ Animal. 4. Đa hình (Polymorphism)
Định nghĩa: Đa hình cho phép các đối tượng được xem xét là một thực thể của nhiều lớp khác nhau.
Ví dụ: Một đối tượng Cat có thể được xem như một Animal. Phương thức
makeSound() có thể được triển khai khác nhau giữa các lớp Cat và Dog nhưng
cùng một interface Animal có thể gọi makeSound().
5. Đóng gói (Encapsulation)
Định nghĩa: Đóng gói là cơ chế của việc che giấu các chi tiết triển khai bên trong
một lớp và chỉ cho phép truy cập đến các thành phần qua một interface công khai.
Ví dụ: Sử dụng các phương thức getter và setter để truy cập và cập nhật các thuộc tính của một lớp.
6. Trừu tượng (Abstraction)
Định nghĩa: Trừu tượng là cơ chế để ẩn đi các chi tiết cụ thể và chỉ hiển thị các tính
năng cần thiết đến người dùng.
Ví dụ: Sử dụng các lớp trừu tượng hoặc interface để định nghĩa một bộ khung cho các lớp khác theo dõi.
Câu 1: Đâu là đặc điểm của Lập trình Hướng Đối Tượng (OOP)?
A. Tái sử dụng mã nguồn
B. Tập trung vào logic thay vì dữ liệu
C. Mã nguồn dễ đọc và quản lý
D. Tất cả các phương án trên
Câu 2: Trong Java, từ khóa nào được sử dụng để kế thừa từ một lớp cha? A. super B. this C. class D. extends
Câu 3: Đóng gói (Encapsulation) trong OOP giúp làm gì?
A. Tăng cường tính bảo mật cho dữ liệu
B. Cho phép truy cập trực tiếp vào các thuộc tính của lớp
C. Giảm thiểu tính kế thừa
D. Tạo các phương thức tĩnh
Câu 4: Trong các phương thức sau, đâu là ví dụ về Đa hình (Polymorphism)?
A. Một lớp có hai phương thức với cùng tên nhưng số lượng tham số khác nhau
B. Một lớp có hai phương thức với cùng tên và số lượng tham số nhưng kiểu dữ liệu tham số khác nhau C. Cả A và B đều đúng D. Cả A và B đều sai
Câu 5: Khi nào một lớp nên được đánh dấu là abstract?
A. Khi nó chứa ít nhất một phương thức abstract
B. Khi tất cả phương thức trong lớp đều là abstract
C. Khi lớp không chứa bất kỳ phương thức abstract nào
D. Khi lớp được thiết kế để kế thừa bởi các lớp khác
Câu 6: Trong Java, interface khác với lớp abstract như thế nào?
A. Interface chỉ chứa phương thức abstract, trong khi lớp abstract có thể chứa
phương thức không phải abstract
B. Interface có thể chứa thuộc tính, trong khi lớp abstract không thể
C. Interface và lớp abstract đều không thể chứa phương thức có thực thi
D. Không có sự khác biệt nào giữa interface và lớp abstract
Câu 7: Trong OOP, thuật ngữ "đa kế thừa" nghĩa là gì?
A. Một lớp kế thừa từ nhiều lớp cha
B. Nhiều lớp kế thừa từ một lớp cha
C. Một lớp kế thừa từ một lớp cha và nhiều interface
D. Không có khái niệm "đa kế thừa" trong OOP
Câu 8: Tại sao phương thức getter và setter lại quan trọng trong đóng gói?
A. Chúng cho phép truy cập và sửa đổi các thuộc tính từ bên ngoài lớp một cách an toàn
B. Chúng tự động tạo ra các thuộc tính cho lớp
C. Chúng làm tăng hiệu suất của chương trình
D. Chúng cho phép mã hóa dữ liệu
Câu 9: Xem xét đoạn mã Java sau: public class Animal { public void sound() {
System.out.println("The animal makes a sound"); } }
public class Dog extends Animal { @Override public void sound() {
System.out.println("The dog barks"); }
public static void main(String[] args) { Animal myDog = new Dog(); myDog.sound(); } }
Khi chạy đoạn mã trên, đầu ra (output) sẽ là gì? A. The animal makes a sound B. The dog barks C. Compile-time error D. Runtime error
Câu 10: Xem xét đoạn mã Java dưới đây: public interface Flyable { void fly(); }
public class Bird implements Flyable { public void fly() {
System.out.println("Bird is flying"); } }
public class Airplane implements Flyable { public void fly() {
System.out.println("Airplane is flying"); }
public static void main(String[] args) { Flyable object = new Bird(); object.fly(); object = new Airplane(); object.fly(); } }
Kết quả khi chạy đoạn mã này sẽ là gì? A. Bird is flying B. Airplane is flying C. Bird is flying Airplane is flying D. Compile-time error
Câu 11: Đánh giá đoạn code sau: public abstract class Shape { abstract void draw(); }
public class Circle extends Shape { void draw() {
System.out.println("Drawing Circle"); } } public class Test {
public static void main(String[] args) { Shape shape = new Circle(); shape.draw(); } }
Phát biểu nào sau đây là đúng?
A. Đoạn mã sẽ gây ra lỗi biên dịch vì lớp Shape là abstract và không thể được khởi tạo.
B. Đoạn mã sẽ in ra "Drawing Circle".
C. Đoạn mã sẽ gây ra lỗi biên dịch vì phương thức draw() trong lớp Circle phải
được đánh dấu là @Override.
D. Đoạn mã sẽ không in ra gì vì lớp Circle không cung cấp triển khai cụ thể cho phương thức draw().
Câu 12: Xem xét đoạn mã Java sau: class Vehicle {
protected String brand = "Ford"; public void honk() {
System.out.println("Tuut, tuut!"); } } class Car extends Vehicle {
private String modelName = "Mustang";
public static void main(String[] args) { Car myCar = new Car(); myCar.honk();
System.out.println(myCar.brand + " " + myCar.modelName); } }
Khi chạy đoạn mã trên, đầu ra (output) sẽ là gì? A. Tuut, tuut! Ford Mustang B. Compile-time error C. Tuut, tuut! D. Runtime error
Câu 13: Câu nào sau đây mô tả chính xác nhất về đóng gói (Encapsulation)?
A. Cơ chế che giấu dữ liệu bên trong một đối tượng, chỉ cho phép truy cập qua các
phương thức của đối tượng đó.
B. Kỹ thuật cho phép một đối tượng kế thừa thuộc tính và phương thức từ một đối tượng khác.
C. Khả năng của một đối tượng để thực hiện nhiều hình thái.
D. Định nghĩa một bản mẫu cho các đối tượng, mô tả thuộc tính và phương thức của chúng.
Câu 14: Từ khóa nào sau đây được sử dụng để áp dụng đa hình trong Java? A. final B. static C. override D. private
Câu 15: Trong Java, một lớp có thể triển khai bao nhiêu interface? A. Chỉ một B. Hai
C. Bất kỳ số lượng nào
D. Không có, Java không hỗ trợ interfaces
Câu 16: Khi nào bạn sẽ sử dụng một lớp trừu tượng (abstract class)?
A. Khi muốn cung cấp một lớp cơ sở mà từ đó các lớp khác có thể kế thừa và triển
khai các phương thức abstract.
B. Khi muốn tạo một đối tượng cụ thể.
C. Khi tất cả các phương thức trong lớp đều là static.
D. Khi muốn ngăn chặn kế thừa.
Câu 17: Đoạn code sau sẽ in ra gì khi được thực thi? class A { void method() {
System.out.println("Class A"); } } class B extends A { void method() {
System.out.println("Class B"); }
public static void main(String[] args) { A obj = new B(); obj.method(); } } A. Class A B. Class B C. Compile-time error D. Runtime error
Câu 18: Điều gì sẽ xảy ra nếu bạn cố gắng truy cập một biến chỉ được định nghĩa
trong phạm vi của một phương thức?
A. Biến sẽ được truy cập bình thường.
B. Một giá trị mặc định của biến sẽ được truy cập.
C. Một lỗi biên dịch sẽ xảy ra.
D. Biến sẽ tự động được chuyển thành biến toàn cục.
Câu 19: Trong Java, từ khóa nào cho phép bạn ghi đè phương thức của lớp cha trong lớp con? A. super B. this C. override D. extends
Câu 20: Tại sao từ khóa final lại được sử dụng trong Java?
A. Để ngăn chặn thừa kế.
B. Để tạo ra các hằng số không thay đổi giá trị sau khi đã được gán.
C. Để đánh dấu một lớp không thể bị kế thừa.
D. Cả A và B đều đúng.
Câu 21: Phương thức nào sau đây KHÔNG phải là một ví dụ về tải phương thức (method overloading)?
A. Phương thức với cùng tên nhưng số lượng tham số khác nhau.
B. Phương thức với cùng tên và số lượng tham số nhưng kiểu dữ liệu tham số khác nhau.
C. Phương thức với cùng tên, số lượng và kiểu dữ liệu tham số nhưng kiểu trả về khác nhau.
D. Cả A, B, và C đều là ví dụ về tải phương thức.
Câu 22: Một interface trong Java có thể kế thừa từ một interface khác không?
A. Có, nhưng chỉ một interface duy nhất.
B. Có, và có thể kế thừa từ nhiều interface.
C. Không, interfaces không thể kế thừa.
D. Không, interface chỉ có thể triển khai từ các lớp cụ thể.
Câu 23: Trong Java, từ khóa nào dưới đây không thể được sử dụng để khai báo một biến? A. final B. static C. public D. private
Câu 24: Điều gì xảy ra khi một lớp Java triển khai một interface nhưng không cung
cấp cài đặt cho tất cả các phương thức của interface đó?
A. Chương trình sẽ biên dịch thành công.
B. Lớp phải được đánh dấu là abstract.
C. Một ngoại lệ sẽ được ném ra khi chạy chương trình.
D. Chương trình sẽ báo lỗi biên dịch.
Câu 25: Một lớp có thể triển khai cùng lúc cả interfaces và kế thừa từ một lớp khác trong Java không?
A. Có, nhưng chỉ kế thừa từ một lớp và triển khai một interface.
B. Có, lớp có thể kế thừa từ một lớp và triển khai nhiều interfaces.
C. Không, lớp chỉ có thể kế thừa hoặc triển khai interfaces.
D. Không, lớp không thể kế thừa từ bất kỳ lớp nào khi đã triển khai một interface.
Câu 26: Phương thức equals(Object obj) được sử dụng để làm gì trong Java?
A. So sánh vị trí bộ nhớ của hai đối tượng.
B. Kiểm tra xem hai đối tượng có cùng giá trị thuộc tính không.
C. Đảm bảo hai đối tượng có cùng kiểu dữ liệu.
D. So sánh địa chỉ IP của hai máy tính.
Câu 27: Trong Java, một lớp có thể trở thành final không?
A. Có, điều này ngăn chặn lớp đó được kế thừa.
B. Không, chỉ phương thức mới có thể là final.
C. Có, nhưng chỉ nếu nó không có bất kỳ phương thức final nào.
D. Không, từ khóa final chỉ áp dụng cho biến và phương thức.
Câu 28: Đoạn code sau đây sẽ in ra gì? public class Test { private int count = 9; public void increment() { count++; }
public static void main(String[] args) { Test obj = new Test(); obj.increment();
System.out.println(obj.count); } } A. 9 B. 10 C. Lỗi biên dịch D. 0
Câu 29: Xem xét đoạn code sau, đầu ra sẽ là gì? class Shape { public void draw() {
System.out.println("Drawing a shape"); } } class Circle extends Shape { public void draw() {
System.out.println("Drawing a circle"); }
public static void main(String[] args) { Shape s = new Circle(); s.draw(); } } A. Drawing a shape B. Drawing a circle C. Lỗi biên dịch D. Lỗi thời gian chạy
Câu 30: Đoạn code sau đây minh họa khái niệm gì? interface Pet { void cuddle(); } class Dog implements Pet { public void cuddle() {
System.out.println("Dog loves cuddling"); } } A. Kế thừa B. Đóng gói C. Đa hình D. Interface
Câu 31: Output của đoạn code sau là gì? public class Main {
public static void main(String[] args) { String s1 = "Java";
String s2 = new String("Java"); System.out.println(s1 == s2);
System.out.println(s1.equals(s2)); } } A. true true B. false false C. true false D. false true
Câu 32: Câu hỏi sau đề cập đến khái niệm nào trong Java?
public abstract class Animal { public abstract void sound(); } A. Đóng gói B. Trừu tượng C. Đa hình D. Kế thừa
Câu 33: Đoạn code sau biểu thị đa hình như thế nào? abstract class Shape { abstract void draw(); }
class Rectangle extends Shape { void draw() {
System.out.println("drawing rectangle"); } } class Circle extends Shape { void draw() {
System.out.println("drawing circle"); } } class TestPolymorphism {
public static void main(String[] args) { Shape s; s = new Rectangle(); s.draw(); s = new Circle(); s.draw(); } }
A. Thông qua việc sử dụng phương thức abstract
B. Thông qua việc ghi đè phương thức
C. Thông qua việc tạo đối tượng của lớp con
D. Tất cả các phương án trên
Câu 34: Khi nào một lớp nên được đánh dấu là final? final class Example { void display() {
System.out.println("This is a final class."); } }
A. Khi bạn muốn ngăn chặn lớp được kế thừa
B. Khi tất cả các phương thức trong lớp là static
C. Khi lớp không chứa bất kỳ phương thức abstract nào
D. Khi bạn muốn lớp đó có thể được kế thừa bởi bất kỳ lớp nào
Câu 35: Đoạn code sau đây sẽ in ra gì? public class Test {
public static void main(String[] args) { int x = 1; int y = 2; int z = x++; int a = ++y; if (z == a) { System.out.println("Hello!"); } else {
System.out.println("Goodbye!"); } } } A. Hello! B. Goodbye! C. Lỗi biên dịch
D. Không có gì được in ra