学习ts(五)类

本文介绍了JavaScript和TypeScript中的类概念,包括基础使用(属性、方法和构造函数),继承机制,方法重写,以及修饰符(public,protected,private,readonly)的运用。同时讨论了静态属性和抽象类的特性。
摘要由CSDN通过智能技术生成

定义

是面向对象程序设计(OOP)实现信息封装的基础
类是一种用户定义的引用数据类型,也称类类型
JavaScriptclass,虽然本质是构造函数,但是使用起来已经方便了许多,js中没有加入修饰符和抽象类等特性
tsclass支持面向对象的所有特性,比如类,接口等

使用

1、基础使用

基础内容:属性、方法、构造函数(类实例化时调用,可以为类的对象分配内存)

class Car{
	engine:string;
	// 构造函数
	constructor(engine:string){
		this.engine = engine
	}

	//方法
	disp():void{
		console.log(this.engine)
	}
}

继承

Dog是一个 派生类,它派生自 Animal 基类,派生类通常被称作子类,基类通常被称作 超类

Dog类继承了Animal类,因此实例dog也能够使用Animalmove方法

class Animal {
    move(distanceInMeters: number = 0): void {
        console.log(`animal moved ${distanceInMeters}m.`)
    }
}

class Dog extends Animal {
    bark(): void {
        console.log('Woof! Woof!')
    }
}

const dog = new Dog()
dog.move(10)
dog.bark()

方法重写

在子类中定义和父类相同名字的方法即可实现方法的重写,可以通过super调用父类的方法

class PrintA {
    printData(): void {
        console.log('父类的print方法')
    }
}

class PrintB extends PrintA {
    printData(): void {
        console.log('子类的print方法')
        super.printData() // 调用父类的方法
    }
}

let printTest = new PrintB()

printTest.printData()

修饰符

  • 公共public:可以自由的访问类程序里定义的成员,不加修饰符默认是public

  • 受保护 protect:除了在该类的内部可以访问,还可以在子类中仍然可以访问

    • 和私有修饰符很相似,实例对象同样不能访问受保护的属性,但是在子类中仍然可以访问
      在这里插入图片描述
  • 私有private:只能够在该类的内部进行访问

    • 只能够在该类的内部进行访问,实例对象和子类并不能够访问
      在这里插入图片描述
  • 只读修饰符 readonly

    • 只读属性必须在声明时或构造函数里被初始化,只能修饰属性在这里插入图片描述

静态属性

这些属性存在于类本身上面而不是类的实例上,通过static进行定义,访问这些属性需要通过 类型.静态属性 的这种形式访问
静态属性能被静态方法访问,非静态方法无法访问静态属性和方法
在这里插入图片描述

get set

在这里插入图片描述

抽象类

使用abstract关键字定义的类 不能被实例化 可以被继承,继承的类需要实现抽象类的方法
使用abstract定义的属性为抽象属性
使用abstract定义的方法为抽象方法
在这里插入图片描述

abstract class PrintA {
    aName: string;
    constructor(param?: string) {
        this.aName = param
    }
    abstract getName() //抽象方法 只是声明,不能实现

}

class PrintB extends PrintA {

    constructor(name: string) {
        super()
        this.setName(name)
    }
    getName() {
        console.log(this.aName)
    }
    setName(name: string) {
        this.aName = name
    }
}
let test = new PrintB('123')
test.getName()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值