Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Lớp cha và lớp con trong JavaScript có thể có phương thức trùng tên không?

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().