MST

星途 面试题库

面试题:JavaScript中class关键字定义类的继承场景优化

假设有一个基础类`Animal`,包含`name`属性和`speak`方法。现在要创建`Dog`和`Cat`类继承自`Animal`,`Dog`类有自己特有的`bark`方法,`Cat`类有自己特有的`meow`方法。请写出完整代码,并阐述如何在继承过程中优化代码结构,例如避免重复代码、合理使用`super`关键字等。
38.8万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass


class Dog(Animal):
    def __init__(self, name):
        super().__init__(name)

    def speak(self):
        return "Woof!"

    def bark(self):
        return self.speak()


class Cat(Animal):
    def __init__(self, name):
        super().__init__(name)

    def speak(self):
        return "Meow!"

    def meow(self):
        return self.speak()

代码结构优化阐述

  1. 避免重复代码
    • 将公共属性name和公共方法speak放到基类Animal中,DogCat类继承Animal,这样就避免了在DogCat类中重复定义name属性和speak方法。
  2. 合理使用super关键字
    • DogCat类的__init__方法中,使用super().__init__(name)调用基类Animal__init__方法来初始化name属性,这样既保证了代码的复用,又避免了在子类中重复编写初始化name属性的代码。
    • Dog类的bark方法和Cat类的meow方法中,通过调用self.speak()方法,复用了speak方法的逻辑,进一步减少了重复代码。