Có. Lớp cha (parent class) và lớp con (child class) hoàn toàn có thể định nghĩa phương thức với cùng một tên. Đây là cơ chế ghi đè phương thức (method overriding) trong lập trình hướng đối tượng.
Ví dụ minh họa
class Parent {
constructor(parentValue) {
this.parentValue = parentValue;
}
// Phương thức của lớp cha
showValues() {
console.log("Phương thức của lớp cha được gọi.....");
console.log("Giá trị = " + this.parentValue);
}
}
class Child extends Parent {
constructor(parentValue, childValue) {
super(parentValue); // Gọi constructor của lớp cha
this.childValue = childValue;
}
// Phương thức của lớp con - TRÙNG TÊN với lớp cha
showValues() {
console.log("Phương thức của lớp con được gọi.....");
console.log("Giá trị = " + `${this.childValue}`);
}
}
// Tạo đối tượng và test
var parentObject = new Parent(100);
parentObject.showValues();
var childObject = new Child(400, 500);
childObject.showValues();
Cách chạy
Lưu vào file demo195.js và chạy:
node demo195.js
Kết quả
Phương thức của lớp cha được gọi.....
Giá trị = 100
Phương thức của lớp con được gọi.....
Giá trị = 500
Lưu ý quan trọng: Khi đối tượng childObject gọi showValues(), phiên bản của lớp con được thực thi (ghi đè). Nếu muốn gọi phương thức của lớp cha từ trong lớp con, sử dụng super.showValues().