3.类(对象的模型),接口
// 类中主要是属性和方法
class Person {
name: string ;(实例属性,通过对象访问)
static age: number = 18;(静态属性,通过类进行访问)
readonly sex: string = '男'; (只读属性,无法进行写操作)
constructor(tag: string) {
this.name = tag(this表示当前实例)
}
say() { console.log('hi!') };
}
let person1 = new Preson('李华');
继承:从基类(超类)中继承属性和方法给派生类 (子类)。
abstract class Animal { (abstrac抽象类,不能直接实例化)
name: string
constructor(name: string) {
this.name = name
}
bark(){
console.log(`${this.name}叫`)
}
abstract move(): void;(抽象方法必须重写)
}
class Dog extends Animal {
constructor(name: string){ super(name);}(super()执行基类的构造函数,之后才能用this)
move() {
console.log('move')
}
}
class Cat extends Animal {
constructor(name: string){ super(name);}
move() {
console.log('move')
}
}
let dog = new Dog('旺财')
let cat = new Cat('小白')
_属性的封装
// public(默认,公共) private(私有,在内部修改) protected 可在子类中访问
class Person {
private _name: string;
constructor(name: string){
this._name = name
}
get name(){
return this._name
}
set name(value: string){
//控制修改操作
this._name = value
}
}
接口(用来定义一个类结构,应包含那些属性和方法,也可用于类型声明,接口可重复声明)
type myType = {
name: string,
age: number
}
interface myinterface{
name: string,
age: number
}
let obj: myInter {
name: '李华',
age: 18
}
// 接口只定义对象结构,所有方法都是抽象方法
interface myInter{
name: string;
say():void;
}
class MyClass implements myInter{
name: string
constructor(name: string) {
this.name = name
}
say(){
console.log(‘hi’)
}
}
// 接口就是定义的一种规范,对于类的限制