Class 类

内容目录

Class 类

基本概念

  • 类:定义了一件事物的抽象特点,包含它的属性和方法。

  • 对象:类的实例。

  • 面向对象三大特性:封装(将操作过程隐藏起来,只向外暴露需要使用地接口)、继承(子类继承父类,子类可以拥有父类地所有成员,并且可以更进一步)、多态(一个方法的多个实现)。

基础代码

//创建一个基本动物类
class Animal {
  readonly name: string; //每个动物都有名字
  static categoies: string[] = ["mammal", "bird"]; //静态方法可以由类名直接调用,这意味着静态方法一般与不受其实例化对象影响
  static isAnimal(a: any) {
    return a instanceof Animal;
  }
  constructor(name: string) {
    //构造函数
    this.name = name;
  }

  run() {
    //成员方法
    return `${this.name} is running!! `;
  }
}

const dog = new Animal("wangcai"); //用Animal类创建一个对象
console.log(dog.run());
console.log(Animal.isAnimal(dog));

class Dog extends Animal {
  //创建一个Animal的子类
  constructor(name: string) {
    //重写构造函数时必须要有super关console.log(this.name)键字
    super(name);
    console.log(this.name);
  }
  //新的成员函数
  bark(): string {
    return `${this.name} : wang wang wang!!`;
  }
  //多态 重写run方法
  run(): string {
    return `wang!  ` + super.run();
  }
}

const myDog = new Dog(`dabao`);
console.log(myDog.bark());
console.log(myDog.run());
console.log(Animal.isAnimal(myDog));

在上述的代码中,我们实现了一个 Animal 类,其中包含了一个构造函数,一个成员方法,一个静态方法,一个静态属性

  • 构造函数:在创建一个类的实例时,会调用构造函数,构造函数中的 this 指向当前的实例。

  • 成员方法:可以通过实例对象调用的方法。

  • 静态方法、静态属性:可以通过类名直接调用,不需要实例化对象。

我们用 Animal 类创建了一个对象 dog,调用了 dog 的 run 方法。同时我们可以使用 Animal 类的静态方法 isAnimal 来判断一个对象是否是 Animal 类的实例。

然后我们创建了一个 Dog 类,继承了 Animal 类,Dog 类中有一个构造函数,一个成员方法 bark,一个重写的 run 方法。我们用 Dog 类创建了一个对象 myDog,调用了 myDog 的 bark 方法和 run 方法。

类的修饰符

  • public:公有属性或方法,可以在任何地方被访问到,默认所有的属性和方法都是 public 的。

  • private:私有属性或方法,不能在声明它的类的外部访问。

  • protected:受保护属性或方法,不能在声明它的类的外部访问,但是可以在子类中访问。

  • readonly:只读属性,只允许出现在属性声明或索引签名中。

这些修饰符帮助我们完成一个类的封装。

相关笔记

css三大特性

css 继承 css 继承是指子元素会继承父元素的样式。 Info 父元素的有关的文字属性会被继承,而非文字属性则不会被继承。 例如,父元素的字体颜色、字体大小、行高等属性会被子元素继承,而父元素的背景颜色、边框样式等属性则不会被子元素继承。

阅读全文

补充

类型别名 类型别名用来给一个类型起个新名字。

阅读全文

css小tips

属性 box-sizing: border-box;:这个属性可以让我们设置的盒子宽高包括内边距和边框。 overflow: hidden;:这个属性可以让我们设置的盒子超出部分隐藏。可以解决嵌套块级元素时发生的塌陷现象。

阅读全文