You are on page 1of 5

Ôn tập Lập trình hướng đối tượng

Câu 1) Trình bày ngắn gọn ưu và khuyết điểm lập trình hướng đối tượng?

(OOP) Lập trình cấu trúc


- Bottom up
- Tiếp cận theo hướng TopDown
- Che dấu dữ liệu thông qua cơ
- Cấu trúc rõ ràng đơn giản, dễ
Ưu điểm chế đóng gói
hiểu
- Tái sử dụng (mở rộng) nhờ cơ
- Dễ bảo trì và quản lý
chế kế thừa
- Khó mở rộng ct
- Cấu trúc ct phức tạp, logic khó
Khuyết điểm - Không đảm bảo tính che dấu
hiểu
dữ liệu
Câu 2) Cho biết điểm giống và khác nhau giữa nập chồng và ghi đè

Ghi đè (overriding) Nạp chồng (Overloading)


Giống nhau - Cùng tên - Cùng tên
- Khác danh sách tham số, khác
- Cùng danh sách tham số, cùng or giống dữ liệu trả về
dữ liệu trả về - Trong kế thừa và các lớp bình
Khác nhau
- Chỉ có trong kế thừa thường khác
- Không thể ghi đè ở lớp final - Có thể nạp chồng trong lớp
final

Câu 3) Trình bày các đặc tính của OOP


- Trừu tượng (Abstraction)
- Đóng gói (Encapsulation)
- Kế thừa (Inheritance)
- Đa hình (Polimorphism)
Câu 4) Cho biết kết quả của chương trình sau và giải thích

1 public class Parent { 17 public class Child extends Parent {


2 protected static int x; 18 @Override
3 public Parent(){ 19 public void inc1(){
4 x = 0; 20 x += 3;
5 } 21 }
6 public void show(){ 22 @Override
7 System.out.println(x); 23 public void inc2(){
8 } 24 super.inc2();
9 protected void inc1(){ 25 x += 4;
10 x++; 26 }
11 } 27 }
12 public void inc2(){ 28
13 this.inc1();
14 x += 2;
15 }
16 }
a. Parent o1 = new Parent();
o1.inc2(); // x = 3
o1.show();
Giải:
- o1 là kiểu Parent
- o1.inc2(): thực hiện hàm ở dòng 12
 this.inc1(): this lúc này chính là đối tượng parent => gọi hàm inc1() trong lớp Parent (dòng 9)
=> x = 1
 x += 2: x = 1 + 2 = 3
 o1.show(): xuất kết quả
 Vậy x = 3

b. Child o2 = new Child();


o2.inc1(); // x = 3
o2.show();
Giải:
- o2 là đối tượng Child
- o2.inc1(): thực hiện hàm ở dòng 19 => x = 3
- o2.show(): xuất kết quả
- Vậy x = 3

c. Parent o3 = new Child(); // tính đa hình


o3.inc2(); // x = 9
o3.show();
Giải:
 o3 là đối tượng Child
 o3.inc2(): thực hiện hàm inc2() ở dòng 23:
- super.inc2(): thực hiện hàm inc2() ở lớp cha (dòng 12)
o this.inc1(): this lúc này trỏ đến đối tượng hiện tại là Child => gọi hàm inc1 (dòng 19)
=> x = 3
o x += 2: x = 5
- x += 4: x = 9
 o3.show(): xuất kết quả x = 9

Câu 3)
Chương trình có lỗi:
- vì dòng 7 có phương thức trừu tượng nên lớp parent cũng phải là Phương thức trừu tượng
- vì dòng 8 là phương thức trừu tượng nên không thể truy cập vào phương thức thông thường, chỉ truy
cập vào phương thức tĩnh
Câu 4)
Câu 2)
This -> this lúc này tham chiếu tới ai?
Super -> gọi Cha

Câu 3)
Phạm vi truy cập ->
Lớp con thg có ghi đè của lớp cha
Phương thức khởi tạo: luôn luôn gọi lớp cha -> con

Interface: ko có phương thức khởi tạo


Abstract: có thể có phương thức khởi tạo

You might also like