Tiếp nối chuỗi các bài viết chia sẻ về các đặc tính của lập trình hướng đối tượng Java bao gồm tính đa hình, tính đóng gói, tính trừu tượng, tính kế thừa. Trong bài viết này anh sẽ trình bày về tính kế thừa, inheritance trong lập trình. Hướng dẫn thông qua các ví dụ minh hoạ và video demo để bạn hiểu hơn và áp dụng được tính chất này vào khi viết các chương trình lập trình Java. Và mục đích, lợi ích của việc sử dụng tính kế thừa trong lập trình Java.
Tính kế thừa các em hiểu nôm na giống như ngoài đời vậy. Anh lấy ví dụ như mình kế thừa ADN của cha và mẹ mình thì mình sẽ có hết tất cả các gen tốt của cha và mẹ. Trong lập trình Java khi nói đến kế thừa thì mình cũng nói khái niệm lớp cha và lớp con. Lớp con sẽ dùng từ khoá extends để mô tả nó sẽ kế thừa lớp cha. Trong lập trình khi lớp cho có 10 thuộc tính nếu lớp con kế thừa lớp cha thì mặc định lớp con có 10 thuộc tính như cha. Anh ví dụ như mình có lớp cha là lớp Vehicle (Xe cộ), trong lớp cha này mình định nghĩa các thuộc tính như color, model và phương thức run. Giả sử như anh có 1 lớp con là Bicycle hoặc Car kế thừa lớp Vehicle thông qua từ khóa extends thì lúc này lớp Bicycle và Car mặc định có thuộc tính là color, model và phương thức run.
Sử dụng kế thừa giúp mình tiết kiệm dòng code. Như vậy ở class Bicycle hay Car anh không phải khai báo lại biến color, model nữa.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Vehicle {
protected String model = "Ford";
protected String color = "Red";
public void run() {
System.out.println("Tuut, tuut!");
}
}
class Bicycle extends Vehicle {
public static void main(String[] args) {
Bicycle myBike = Bicycle Car();
myBike.run();
System.out.println(myBike.color + " " + myBike.model);
}
}
class Car extends Vehicle {
private String modelName = "Mustang"; // Car attribute
public static void main(String[] args) {
Car myCar = new Car();
myCar.run();
System.out.println(myCar.color + " " + myCar.model);
}
}
Trong trường hợp mình có lớp cha nhưng không muốn cho lớp con kế thừa thì mình dùng từ khóa final.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
final class Vehicle {
protected String model = "Ford";
protected String color = "Red";
public void run() {
System.out.println("Tuut, tuut!");
}
}
class Bicycle extends Vehicle {
public static void main(String[] args) {
Bicycle myBike = Bicycle Car();
myBike.run();
System.out.println(myBike.color + " " + myBike.model);
}
}
Như vậy khi chạy chương trình thì nó sẽ báo lỗi ở lớp Bicycle vì kế thừa lớp Vehicle. Chương trình sẽ thông báo cho chúng ta là lớp Bicycle không thể kế thừa lớp Vehicle được