class Animal {
constructor(type, name) {
this.type = type;
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
class Dog extends Animal {
constructor(name, breed) {
super('Dog', name);
this.breed = breed;
}
speak() {
super.speak(); // Call the parent class's speak method
console.log(`${this.name} barks.`);
}
}
const dog = new Dog('Buddy', 'Golden Retriever');
dog.speak();
// Output:
// Buddy makes a noise.
// Buddy barks.
Static methods and properties belong to the class itself, rather than to instances of the class. They are often used for utility functions that are related to the class but don't need to operate on instances of the class.