Inheritance
Kế thừa là cơ chế cho phép lớp con được sử dụng lại các đặc điểm và hành vi đã được định nghĩa trong lớp cha.
Quan hệ giữa lớp con và lớp cha là QUAN HỆ IS-A
VD:
House is a herbivore animal.
Lion is a carnivore animal.
Từ khóa kế thừa : public class SportCar extends Car
Rules:
- Hàm tạo không cho phép kế thừa
- Lớp con có thể kế thừa các thuộc tính và phương thức public hoặc protected, ngoại trừ các thành phần khai báo là private.
- Java không cho phép đa kế thừa ( một lớp kế thừa nhiều lớp cha)
Gọi hàm tạo của class cha tại một class con, tức là gọi các thuộc tính hoặc các phương thức đã được định nghĩa trong class cha:
super(thuộc tính)
super.(phương thức)
Một số dạng kế thừa:
Single: đơn kế thừa
Multilevel: phả hệ cha-con-con con —–
Multiple: đa kế thừa
Hierarchical: một lớp cha có nhiều lớp con với nhiều level khác nhau.
@Override
Tên phương thức ghi đè ở lớp con trùng phải tên và kiểu dữ liệu trả về với phương thức ở lớp cha.
Method ở lớp con phải có access modifier bằng hoặc cao hơn so với Method ở lớp cha.
Bất cứ lớp nào trong JAVA được tạo ra đều ngầm định là lớp object có sẵn phương thức toString()
(đến bài attrack và interface chúng ta sẽ hiểu thêm về @override)
POLYMORPHISM
POLYMORPHISM là cơ chế cho phép một biến thuộc kiểu dữ liệu cha có thể trỏ đến một đối tượng thuộc lớp con
VD:
Animal cat = new Cat();
Animal cat là biến thuộc kiểu dữ liệu cha
new Cat() là đối tượng thuộc lớp con
POLYMORPHISM và INHEIRTANCE liên quan đến cấu trúc chương trình
Dynamic Binding
là cơ chế của JVM để xác định gọi phương thức nào tại thời điểm thực thi
DB sẽ dựa vào kiểu thực tế để gọi phương thức
Field có kiểu thực tế là gì thì DB sẽ gọi phương thức được định nghĩa trong kiểu đó.
Narrow Casting và Wide Casting
Inplicit casting:
Object o = new Circle();
Geomatric g = new Circle();
instanceof kiểm tra kiểu dữ liệu của một trường field
Từ khóa FINAL
không cho phép kế thừa
không cho phép override
không cho phép thay đổi giá trị trường (hằng CONST)