美文网首页
类-构造函数-继承-抽象类

类-构造函数-继承-抽象类

作者: 浅浅_2d5a | 来源:发表于2022-07-27 13:52 被阅读0次

// 使用class关键字来定义类

class Person{
    // 直接定义的是实例属性,需要new Person()生成的实例去访问
    name: string = '张三'
    // readonly name: string = '张三' //设置只读后,实例化对象就不能再更改
    // 加入static关键词 定义静态属性(类属性)Person.age 进行访问
    static age: number = 12
    // static readonly age: number = 12 // 设置静态属性为制度,static readonly的顺序不能变
    sayHello(){  // 直接定义的方法,就是实例方法
        console.log('hello')
    }
    static sayWhy(){  // static, 类方法,Person.sayWhy()
        console.log('why')
    }
}
var per = new Person()
console.log('打印',per.name) 
per.name = '李四' // 实例属性可以更改
console.log('打印2',per.name) 
console.log('打印1',Person.age)

// 构造函数使用

class Dog{
    name: string
    age: number
    // constructor 为构造函数
    // 构造函数会在对象创建时调用
    constructor(name:string, age:number){
        // 在视力方法中,this就表示当前的实力
        // 在构造函数中当前对象就是当前新建的那个对象
        // 可以通过this向新建的对象中添加属性
        this.name = name
        this.age = age
    }
}
var dog = new Dog('哈士奇',32)
console.log('dog', dog)

// 继承

class Animal{
    name: string
    constructor(name:string){
        this.name = name
    }
    sayHello(){
        console.log('say hello')
    }
}

class Dog extends Animal{
    age: number
    constructor(name:string, age:number){
        // super代表子类的父类
        // 子类中写了构造函数,必须对父类的构造函数进行调用
        super(name)
        this.age = age
    }
    // 增加子类的方法
    run(){
        console.log(this.name + '我在跑')
    }
    // 重写sayHello
    sayHello(): void {
        console.log('汪汪汪')
    }
}

var dog = new Dog('哈士奇',3)
console.log(
    'dog',dog
)
dog.sayHello()

// 抽象类
超类只用于被其他类继承,不能用于创建对象,以 abstract 开头的类称为抽象类。
抽象类可以添加抽象方法

abstract class Animal{
    name: string
    constructor(name:string){
        this.name = name
    }
    // 抽象方法以abstract开头,没有方法体
    // 抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写,否则报错
    abstract sayHello():void
}

class Dog extends Animal{
    age: number
    constructor(name:string, age:number){
        super(name)
        this.age = age
    }
    // 重写sayHello
    sayHello(): void {
        console.log('汪汪汪')
    }
}

相关文章

  • 【Dart】Dart类与对象

    类与对象 类 继承 抽象类 接口 混入 泛型 枚举类类-简介 构造器 (构造函数) 默认构造函数与类同名的函数,在...

  • 那么 类 抽象类 接口 这三者又是什么关系呢?

    抽象类和普通类的区别 1.抽象类不能被实例化。 2.抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽...

  • 抽象类相关

    抽象类有构造函数吗?抽象类有构造函数,如果抽象类声明并定义了构造函数,它可以用来初始化抽象类内部声明的通用变量,并...

  • 类-构造函数-继承-抽象类

    // 使用class关键字来定义类 // 构造函数使用 // 继承 // 抽象类超类只用于被其他类继承,不能用于创...

  • class 类

    基本用法 构造函数和this 继承 抽象类 接口(TypeScript 独有) 属性的封装 泛型

  • Kotlin--学习总结

    声明对象 数组和集合 函数 类 构造函数 继承 抽象类 object 接口 导入包 可见修饰符 空安全 for循环...

  • Flutter之Dart语言 面向对象(一)

    目录 实例化成员变量 构造函数 读取和写入对象 setters 和 Getters 重载操作 继承类 抽象类 对象...

  • 继承中执行顺序讨论

    继承中,子父类的构造函数(构造函数不被继承)1.子类必须调用父类的构造函数(构造函数不被继承)(1)如果没有写调用...

  • 9月21日-4期C语言学习总结

    今天学习:拷贝构造函数、构造、析构函数。 抽象类只能做基类来使用。 纯虚函数直到被覆盖前所派生的类均为抽象类。 b...

  • js的继承方式

    1 类式继承 子类的原型对象 2 构造函数继承 创建即继承 3 组合继承 (类式继承和构造函数...

网友评论

      本文标题:类-构造函数-继承-抽象类

      本文链接:https://www.haomeiwen.com/subject/olnoirtx.html