【TypeScript】类

类:可以理解为模板,通过模板可以实例化对象
面向对象的编程思想

    // ts中类的定义及使用
    class Person {
        // 定义属性
        name: string
        age: number
        gender: string
        // 构造函数
        constructor(name: string, age: number, gender: string) {
            this.name = name
            this.age = age
            this.gender = gender
        }

        sayHi() {
            console.log(`大家好,我是${this.name},今年已经${this.age}岁了,是个${this.gender}孩子`)
        }
    }

    // ts中实用类,实例化对象,可以直接进行初始化操作
    const person = new Person('kudo', 18, '男')
    person.sayHi()

在这里插入图片描述

继承

A类继承了B这个类,那么此时A类叫子类,B类叫基类
子类—>派生类
基类—>超类(父类)

    // 定义一个类
    class Person {
        // 定义属性
        name: string
        age: number
        gender: string

        // 定义构造函数
        constructor(name: string, age: number, gender: string) {
            // 更新属性数据
            this.name = name
            this.age = age
            this.gender = gender
        }

        // 定义实例方法
        sayHi(str: string) {
            console.log(`我是:${this.name}, ${str}`)
        }
    }

    // 定义一个学生类
    class Student extends Person {
        constructor(name: string, age: number, gender: string) {
            // 调用父类的构造函数
            super(name, age, gender)
        }
    }

    // 实例化Person
    const person = new Person('kudo', 18, '男')
    person.sayHi('哈哈')

    // 实例化Student
    const student = new Student('kudo', 17, '男')
    student.sayHi('hhhh')

在这里插入图片描述

多态

多态:父类型的引用指向子类型的对象,不同类型的对象针对相同的方法,产生了不同的行为

    // 定义一个父类
    class Animal {
        name: string

        constructor(name: string) {
            this.name = name
        }

        run(distance: number = 0) {
            console.log(`跑了${distance}米这么远的距离`)
        }
    }

    // 定义一个子类
    class Dog extends Animal {
        // 构造函数
        constructor(name: string) {
            // 调用父类的构造函数,实现子类中属性的初始化操作
            super(name)
        }

        run(distance: number = 5) {
            console.log(`跑了${distance}米这么远的距离`, this.name)
        }
    }

    // 定义一个子类
    class Pig extends Animal {
        // 构造函数
        constructor(name: string) {
            // 调用父类的构造函数,实现子类中属性的初始化操作
            super(name)
        }

        run(distance: number = 10) {
            console.log(`跑了${distance}米这么远的距离`, this.name)
        }
    }

    // 实例化父类对象
    const ani: Animal = new Animal('动物')
    ani.run(1)

    // 实例化子类对象
    const dog: Dog = new Dog('大黄')
    dog.run()
    const pig: Pig = new Pig('大猪')
    pig.run()

    // 父类类型创建子类对象
    const dog1: Animal = new Dog('小黄')
    dog1.run()
    const pig1: Animal = new Pig('小猪')
    pig1.run()

    function showRun(animal: Animal) {
        animal.run()
    }

    showRun(new Dog('小狗狗'))
    showRun(new Pig('小猪猪'))

在这里插入图片描述

修饰符

public 公共的 默认
private 私有的 子类也无法访问该属性,外部也不能访问s
protected 受保护的 子类可以访问,外部不能访问

readonly

readonly修饰符:只读
构造函数中,可以对只读的属性成员的数据进行修改

    class Person {
        readonly name: string
        constructor(name: string) {
            this.name = name
        }
    }

存取器

存取器:让我们可以有效的控制对 对象中的成员进行访问,getters和setters

    class Person {
        firstName: string
        lastName: string

        constructor(firstName: string, lastName: string) {
            this.firstName = firstName
            this.lastName = lastName
        }

        // 读取器
        get fullName() {
            return this.firstName + '_' + this.lastName
        }

        // 设置器
        set fullName(val) {
            let names = val.split('_')
            this.firstName = names[0]
            this.lastName = names[1]
        }
    }

    // 实例化对象
    const person: Person = new Person('kudo', 'sama')
    console.log(person.fullName)
    person.fullName = '诸葛_孔明'
    console.log(person.fullName)

在这里插入图片描述

静态成员

    // 定义一个类
    class Person {
        static name1: string = 'kudo'

        static sayHi() {
            console.log('你好呀')
        }
    }

    console.log(Person.name1)
    Person.name1 = '张三'
    console.log(Person.name1)
    Person.sayHi()

在这里插入图片描述

抽象类

抽象类:包含抽象方法,抽象类不能被实例化
抽象类的目的是为了子类服务的

    // 定义一个抽象类
    abstract class Animal {
        // 抽象方法
        abstract eat()

        sayHi() {
            console.log('你好呀')
        }
    }

    // 定义一个子类
    class Dog extends Animal {
        // 实现父类中的抽象方法
        eat() {
            console.log('我是干饭狗')
        }
    }

    // 实例对象
    const dog: Dog = new Dog()
    dog.eat()
    dog.sayHi()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值