# 面向对象

一切操作都要通过对象,也就是所谓的面向对象

# class

定义类

class 类名 {
	属性名: 类型;
	
	constructor(参数: 类型){
		this.属性名 = 参数;
	}
	
	方法名(){
		....
	}

}

示例

class Person{
    name: string;
    age: number;

    constructor(name: string, age: number){
        this.name = name;
        this.age = age;
    }

    sayHello(){
        console.log(`大家好,我是${this.name}`);
    }
}

let person = new Person("zs", 18);
person.sayHello()

console.log(person)

# 作用域

TS中属性具有三种修饰符:

  • public(默认值),可以在类、子类和对象中修改
  • protected ,可以在类、子类中修改
  • private ,可以在类中修改

# 静态属性

静态属性(方法),也称为类属性。使用静态属性无需创建实例,通过类即可直接使用,静态属性(方法)使用static开头

class Tools{
    static PI = 3.1415926;
    
    static sum(num1: number, num2: number){
        return num1 + num2
    }
}

console.log(Tools.PI);
console.log(Tools.sum(123, 456));

# 接口(Interface)

接口的作用类似于抽象类,不同点在于接口中的所有方法和属性都是没有实值的,换句话说接口中的所有方法都是抽象方法。
接口主要负责定义一个类的结构,接口可以去限制一个对象的接口,对象只有包含接口中定义的所有属性和方法时才能匹配接口。同时,可以让一个类去实现接口,实现接口时类中要保护接口中的所有属性。

interface Animal {
    name: string;
    say(): void;

}

class Dog implements Animal {
    say(): void {
        console.log('dog')
    }

    name = "dog";
}