TypeScript面向对象 01

使用class关键字来定义一个类。对象中主要包含了两个部分:属性和方法。

class Person {
    // 定义实例属性
    name:string = 'glm';
    age:number = 1234;
}
const a = new Person();
console.log(a.name);

在这里插入图片描述

在属性前使用static关键字可以定义类属性(静态属性)

class Person {
    // 定义实例属性
    name:string = 'glm';
    age:number = 1234;
    static school:string = "whatu";
}
const a = new Person();
console.log(a.name);
console.log(Person.school);

在这里插入图片描述

class Person {
    // 定义实例属性
    name:string = 'glm';
    age:number = 1234;
    static school:string = "whatu";
    say_fn1() {
        console.log("fn -- say_fn1");
    }
    static say_fn2() {
        console.log("fn -- say_fn2");
    }
}
const a = new Person();
console.log(a.name);
console.log(Person.school);
a.say_fn1();
Person.say_fn2();

在这里插入图片描述

构造函数

constructor被称为构造函数。构造函数会在对象创建时被调用。在实例方法中,this就表示当前的实例。在构造函数中当前对象就是当前新建的那个对象。可以通过this向新建的对象中添加属性。

class Person {
    name:string;
    age:number;
    constructor(name:string, age:number) {
        this.name = name;
        this.age = age;
    }
}
const a = new Person('yh', 321);
console.log(a.name, a.age);

在这里插入图片描述

继承

使用继承后,子类会拥有父类所有的方法和属性。通过继承可以将多个类中共有的代码写在一个父类中。

  • 如果希望在子类中添加一些父类中没有的属性或方法直接加在子类中即可。
  • 如果在子类中添加了和父类相同的方法,则子类方法会覆盖掉父类原方法(重写)
class Person {
    name:string;
    age:number;
    constructor(name:string, age:number) {
        this.name = name;
        this.age = age;
    }
}
class Student extends Person {
    info() {
        console.log("学生:" + this.name);
    }
}
const stu = new Student('glm', 14);
stu.info();

在这里插入图片描述

super

子类通过 super 关键字调用父类的构造函数和方法。super 关键字在子类的构造函数中用于调用父类的构造函数,在方法中用于调用父类的方法。

class Person {
    name:string;
    age:number;
    constructor(name:string, age:number) {
        this.name = name;
        this.age = age;
    }
    say() {
        console.log("this is Father_Class");
    }
}
class Student extends Person {
    uid:string;
    constructor(name:string, age:number, uid:string) {
        super(name, age);
        this.uid = uid;
    }
    info() {
        console.log("学生:" + this.name);
    }
    say() {
        super.say();
        console.log("this is Child_Class");

    }
}
const stu = new Student('glm', 14, "2345");
stu.say();

在这里插入图片描述

https://blog.csdn.net/qq_45590504/article/details/142503245?ops_request_misc=%257B%2522request%255Fid%2522%253A%25223ADDA7B1-A0FD-41B7-BFA8-21C3B9193504%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=3ADDA7B1-A0FD-41B7-BFA8-21C3B9193504&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-142503245-null-null.142v100pc_search_result_base1&utm_term=typescript%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

golemon.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值