📜  CoffeeScript-类和继承(1)

📅  最后修改于: 2023-12-03 15:14:12.148000             🧑  作者: Mango

CoffeeScript 类和继承

CoffeeScript 是一种与JavaScript兼容的编程语言,它的语法更加简洁和优雅。在CoffeeScript中,定义一个类和继承一个类非常容易。

类定义

在CoffeeScript中定义一个类,我们使用class关键字,然后是类的名称。在类的内部,我们使用缩进来组织代码块。

下面是定义一个名为Person的类的示例:

class Person
  constructor: (name, age) ->
    @name = name
    @age = age

  sayHi: ->
    console.log "Hi, my name is #{@name} and I'm #{@age} years old."

从上述示例中我们可以看出,类中有两个方法:构造函数 constructor 和方法 sayHi。构造函数是在类实例化时被调用的函数,可以在里面设置实例变量。

在 CoffeeScript 中,我们使用 @ 来表示 this

继承

继承在面向对象编程中是一个非常重要和有用的概念。为了继承一个类,我们使用 extends 关键字。假设我们有一个名为 Student 的子类,通过以下代码可以实现类 Student 继承自类 Person

class Student extends Person
  constructor: (name, age, grade) ->
    super(name, age) # 调用父类的构造函数
    @grade = grade

  sayHi: ->
    console.log "Hi, my name is #{@name}, I'm #{@age} years old and I'm in grade #{@grade}."

在上面的代码中,我们通过extends关键字告诉 CoffeeScript Student 类继承自 Person 类。由于 Student 类要添加额外的实例变量 grade,所以我们需要在构造函数中添加 grade 参数,然后在 super 中调用父类的构造函数,将 nameage 参数传递给父类来设置实例变量。

此外,子类还可以对父类方法进行覆盖(即重载)。在上面的示例中,我们已经覆盖了 sayHi 方法,以显示所有实例变量。

示例

下面是使用 PersonStudent 类创建对象的示例:

person1 = new Person("Tom", 20)
person1.sayHi() # 输出 "Hi, my name is Tom and I'm 20 years old."

student1 = new Student("Bob", 18, 12)
student1.sayHi() # 输出 "Hi, my name is Bob, I'm 18 years old and I'm in grade 12."
结论

通过这个简短的教程,您应该已经了解了 CoffeeScript 中类和继承的基础知识。通过使用类和继承,我们可以轻松地创建更具可读性和可维护性的代码。