You are on page 1of 8

I.

II. Các tính chất hướng đối tượng trọng Java:


1. KẾ THỪA

 Nó là một trong những tính chất hướng đối tượng của java:
Kế thừa lại các trường các phương thức của lớp cha (những thành phần
public, protected)
tiết kiệm được thời gian code lại những phần không cần thiết
dễ dàng mở rộng được code.
 Ép kiểu trong mối quan hệ kế thừa(Con bên dưới, Cha trên)
Upcasting(Con lên Cha )
Animal cat = new Cat();// gán đối tượng của lớp con cho lớp cha
Thì cat chỉ dụng được các thành phần của lớp cha và một phần của lớp con.

Dowcasting(Cha xuống Con)


Animal animal = new Cat();
Cat tom = (Cat) animal;
tom.(truy cập được tất cả được các phương thức của lớp con)
để không bị xảy ra ngoại lệ ClassCastExeption thì mình kiểm tra xem (tom
instand of(Cat))(tom có phải là thể hiện của Animal hay không)
 Các thành phần protected
Các outer class hay interface thì nó không thể khai báo với key word
protected.
Protected class Person(){//error
}
các phương thức protected thường được sử dụng cho phép các lớp con
hoặc các lớp trong cùng một gói với lớp chứa thành phân protected đó
được sử dụng
ngăn cấm việc tạo đối tượng bên ngoài một lớp

 Phạm vi sử dụng của các AcessModifier


1) Private: chỉ khả dụng trong phạm vi lớp của nó( dữ liệu lớp nào thì
lớp đó sử dụng)
2) Public: khả dụng với mọi lớp(trong các lớp, trong các quan hệ kế
thừa và trong các package đểu được sử dụng
3) Protedted:trong phạm vi lớp chứa nó, các lớp con, và trong cùng
một gói
4) Default:ta không khai báo bất kì thành phần accessmodifier nào,
khả dụng trong lớp chứa nó và trong cùng một gói
2. ĐA HÌNH

 Ghi đè phương thức(override)


Định nghĩa lại phương thức của lớp cha theo cách của lớp con, chỉ diễn ra
trong mối quan hệ kế thừa, tái sử dụng lại tên của phương thức
super.show().
public void show() {
super.show();
System.out.println("Role is: " + role + "|Salary is: " + salary +
"|nameAssignment is: " + nameAssignment + "|Experience is: " +
experience);
}
 Các thành phần final:
Các lớp final không thể bị kế thừa, tạo ra các lớp bất biến(cấm kế thừa)
Các phương thức final thì không thể bị override(cấm override)
 Quy tắc sử dụng override
Không được thay đổi kiểu,thứ tự, số lượng tham số giống với phương thức
gốc, không được hạ cấp acessmodifier trong phương thức gốc
Key word super()
 Gọi đến constructor
 Gọi đến phương thức
 Gọi đến các trường được kế thừa
 Nạp chồng(overloading)
là kĩ thuật trong Java cho phép 2 hoặc nhiều phương thức có cùng tên
nhưng khác tham số(về kiểu, số lượng, thứ tự)

Sự khác nhau:
Nạp chồng:
Thuộc loại đa hình tại thời điểm biên dịch chương trình.
Cùng cấp nhiều chức năng cho nhiều kiểu tham số khác nhau
Xảy ra trong một lớp độc lập hoặc trong quan hệ kế thừa
Ghi đè:
Thuộc loại đa hình tại thời điểm chương trình chạy.
Tăng mức độ tương thích của phương thức của lơp cha trong ngữ cảnh sử
dụng lớp con
Chỉ xảy ra trong quan hệ kế thừa
 Lớp Object
Lớp object là tổ tiên của mọi lớp, nếu không chỉ rõ lớp cha trực tiếp thì lớp
cha trực tiếp của nó là object
 Phương thức int hahcode(): trả về một mã băm mặc định mổi đối
tượng trong java sẽ có một mã băm duy nhất
 StringToString trả về String mô tả vắn tắt thông tin về đối tượng hiện
thời
 Class<?> getClass(): trả về kiểu lớp của đối tượng hiện thời

3. TRỪU TƯỢNG
 Tính trừu tượng tức là nhìn vấn đề một cách tổng thể chứ không phải
là cụ thể
 Lớp abstract là một lớp chứa keyword abstract
 Phương thức abstract là phương thức chứa key word abstract trong
khai báo lớp, và nó chỉ khai báo chứ không được định nghĩa, nêu ra
hành động muốn thực hiện nhưng không thực hiện hành động đó
mà lớp con của nó mới thực hiện điều đó
 Lớp abstract không thể tạo đối tượng của chính nó, nhưng có thể
làm kiểu của biến để tham chiếu đến các lớp con của nó(tính trừu
tượng)
 Một lớp con kế thừa từ lớp abstract thì lớp đó phải implement tất cả
những method nếu không thì phải trở thành một lớp abstract
4. INTERFACE:
 Nó là một kiểu tham chiếu trong java, tập hợp những phương thức
abstract và hằng số
 Nó mặc định là abstract
 Các trường khai báo trong interface là publicstatic final:
Mục đích:
 Đạt được tính trừu tượng hoàn toàn
 Đạt được mục đích đa kế thừa trong java(một interface có thể
extend nhiều interface)
 Đạt được tính chất kết nối lõng lẽo, tức là các thành phần trong
module càng ít liên quan đến nhau càng tốt, dễ dàng quản lí.
 Một interface không thể extend một lớp

5. CÁC TÍNH NĂNG MỚI CỦA INTERFACE TRONG JAVA 8+9

6. SO SÁNH ABSTRACT CLASS VS INTERFACE


1) Sự giống nhau:
Đều là các kiểu tham chiếu trong java
Dùng để đạt tính trừu tượng trong java
Chứa những dữ liệu là hằng số
Không thể khởi tạo đối tượng của chính nó mà chỉ có thể dùng làm
kiểu tham chiếu đến đối tượng của nó
2) Sự khác nhau:

Abstract class
Tiêu chí interface

Keyword abstract Phải khai báo tường minh Ngầm định là abstract nên ta không cần
khai báo abstract trong
interface

Loại phương thức Có thể chứa tất cả các loại Chỉ có thể chứa các phương thức
phương thức: từ constructors, abstract, default, static, private
static, non-static, abstract

Dữ liệu Có thể chứa tất cả các loại dữ Chỉ có thể chứa hằng số public static final.
liệu: hằng số, không phải hằng
số, static, non-static.

Sự thực thi lẫn nhau Abstract class có thể cung cấp Interface không thể cung cấp
các thực thi cho interface các thực thi cho abstract class

Đa kế thừa Abstract class chỉ có thể kế Inteface có thể kế thừa nhiều


thừa 1 lớp cha trực tiếp duy interface khác nhau
nhất

Đa thực thi Abstract class có thể extends Interface chỉ có thể extends các interface
class khác và implements nhiều
interface tùy ý

Access modifier Có thể chứa các thành phần Mặc định các thành phần của interface là
public, protected, private, public. Với phương thức thì từ Java 9 có thêm
private package access thành phần private

Constructors Có thể chứa các constructor có Không hỗ trợ bất kì kiểu constructor nào
hoặc không có tham số nhưng
không chứa default constructor

Khi nào sử dụng abstract class?


 Sử dụng abstract class nếu bạn có 1 trong các tiêu chí sau:
o Nếu bạn có một nhóm các lớp liên quan cần chia sẻ chung một đoạn
code, tính năng nào đó. Bạn có thể đưa đoạn code đó hay tính năng
đó vào lớp abstract và các lớp con có liên quan sẽ extends lớp
abstract này.
o Bạn mong đợi rằng các lớp kế thừa lớp abstract của bạn có chung
nhiều trường, phương thức hoặc mong muốn có thể sử dụng các
access modifier khác chứ không chỉ là public.
o Bạn muốn khai báo các trường non-static, non-final. Nhờ đó bạn có
thể định nghĩa các phương thức có thể truy cập và sửa đổi các trạng
thái của từng đối tượng.
Khi nào sử dụng interface?
 Sử dụng interface trong các trường hợp sau:
o Đạt được tính trừu tượng hoàn toàn. Tất cả các phương thức được
định ra chưa có phần thân thực thi mà cần được thực thi ở các lớp
con implements nó.
o Muốn đạt được tính chất đa kế thừa.
o Muốn cho các lớp không liên quan đến nhau cũng có thể implements
interface.
o Bạn muốn chỉ định các hành vi cần thực hiện nhưng không quan tâm
các hành vi đó sẽ được thực hiện như nào, do lớp nào.

 Khi nào dùng abstract class?


 CÂU TRẢ LỜI CỦA BẠN:  B. Khi muốn tạo lớp cha chung cho một
nhóm các lớp nào đó 

 Câu 29. Tại sao phương thức main lại là


static?
 CÂU TRẢ LỜI CỦA BẠN:  A. Để có thể vận hành mà không cần có
đối tượng của lớp nào  

7. XỬ LÍ NGOẠI LỆ
là một sự kiện không mong muốn làm cho chương trình gián đoạn hoặc kết
thúc không mong muốn
một số nguyên nhân:
 Nhập dữ liệu không đúng định dạng
 File đầu vào không tồn tại(FileNotFound)
 Lỗi logic của lập trình viên
 Bộ nhớ đầy khi thực hiện chương trình

Lỗi nghiêm trọng không thế khắc phục bằng chương trình đó gọi là error
Xữ lí ngoại lệ:
 Phòng bằng cách lập luận Xứ lí logic:
 Xử lí triệt để bằng cách dùng try catch()
 Dùng Throws nếu không biết cách xử lí ngoại lệ hoặc lười xử lí, huyển việc
xử lý ngoại lệ đó cho nơi đã thực hiện lời gọi phương thức thông qua
throws.
 Check vs UncheckException
 CheckException: là ngoại lệ được xảy ra và cảnh báo bởi trình biên dịch
ngay tại thời điểm biên dịch code.ngoại lệ này thì không thể bỏ qua và
bắt buộc người lập trình viên phải xử lí nó
 Một số ngoại lệ thường gặp như
 FileNotFoundException
 ParseException
 ClassNotFoundException
 IvalidClassException
 UncheckException(RunTimeException):là loại ngoại lệ xãy ra tại thời
điểm chạy, ta có thể bỏ qua tại thời điểm biên dịch chương trình, nguyên
nhân do lỗi logic của người lập trình viên
 Một số ngoại lệ thường gặp:
 NullPointerException
 ArrayIndexOutBound
 ArthimeticException
 ClassCastException

You might also like