Typescript(八)类的概念和使用

类是一个功能的集合。

一:类的定义及基本使用

1:定义一个类
class lady{
    content = "你好啊,我是camellia";
    say(){
        console.log(this.content);
    }
}
 
2:调用类
// 类的使用
let camellia = new lady();
camellia.say();
// 输出:你好啊,我是camellia
 

二:类的继承

1:定义一个girl类继承lady类
class girl extends lady{
    saylove(){
        console.log("我是girl~");
    }
}
2:子类调用父类方法
// 类的继承
let girls = new girl();
// 子类对父类同名方法重写
girls.say();
girls.saylove();
// 输出:你好啊,我是camellia
//       我是girl~
3:子类重写父类同名方法
class girl extends lady{
 
    say(){
        console.log('我是子类中的say方法!');
    }
    saylove(){
        console.log("我是girl~");
    }
}

调用:

// 类的继承
let girls = new girl();
// 子类对父类同名方法重写
girls.say();
girls.saylove();
// 输出:我是子类中的say方法!
//       我是girl~
4:子类调用父类中的同名方法,使用super关键字
class girl extends lady{
 
    say(){
        // console.log('我是子类中的say方法!');
        return super.say();
    }
    saylove(){
        console.log("我是girl~");
    }
}
// 类的继承
let girls = new girl();
// 子类对父类同名方法重写
girls.say();
girls.saylove();
// 输出:你好啊,我是camellia
//       我是girl~
 

三:类的访问类型

基本上就是面向对象的三大类型:public protected private

Public 定义的方法和属性,类内外都可调用

Private定义的方法和属性,只有类内可使用

Protected定义的方法和属性,只有类内和其子类可调用

class person{
    public name:string;
    protected age:number;
    private weight:number;
}

这个是面向对象的基础知识,这里不做过多的解释。

四:类的构造函数

构造函数关键字:constructor

1:定义一个类,带有构造函数
class person{
    public name:string;
    protected age:number;
    private weight:number;
    constructor(name:string,age:number,weight:number){
        this.name = name;
        this.age = age;
        this.weight = weight;
        console.log(name);
        console.log(age);
        console.log(weight);
    }
}
 
const han = new person('camellia',30,180);
// 输出:
// camellia
// 30
// 180
2:构造函数继承
class teacher extends person{
    public sex:string;
    constructor(sex:string){
        // 子类构造函数需要使用super关键字来调用父类的构造函数,否则报错
        super(han.name,han.age,han.weight);
        this.sex = sex;
        console.log(this.name);
        console.log(this.age);
        console.log(this.weight);
        console.log(this.sex);
    }
}
const zc = new teacher('男');
// 输出:
// camellia
// 30
// 180
// 男

五:类的getter,setter,static

1:getter和setter

Typescript是微软写的,C#也是微软写的,所以C#和typescript中都有get,set这两个玩意。

get和set是属性,而不是一个方法。

Get其实就是对我们的属性进行包装保护在进行输出。

Set是对外部访问类的属性做一个类似中间件的处理,确保我们的属性合法。

class ren
{
    public _age:number;
    constructor(age:number)
    {
        this._age = age;
    }
    set age(age:number){
      this._age = age;
    }
    get age(){
      return this._age - 10;
    }
}
 
const aa = new ren(35);
aa.age=35
console.log(aa.age)
 
2:static静态方法

类需要实例化一个对象存放在内存中,我们需要调用类中方法的时候,直接调用就好。

类中的静态方法是在程序加载的时候就加载到内存中,程序关闭后销毁,因此,静态方法在想调用的时候直接使用类名调用就好。

class car{
    static pao(){
        console.log(
            "挂挡,加油,走你!"
        )
    }
}
// 调用
car.pao();
// 输出:
// 挂挡,加油,走你!

六:类的只读属性

class baoma{
   // 声明已读属性
    public readonly siqu:string = "x-driver"
    static pao(){
        console.log(
            "挂挡,加油,走你!"
        )
    }
}
 
const sanxi = new baoma();
console.log(sanxi.siqu);  
// 输出 x-driver

当我们修改sanxi.siqu属性时,如下图所示:

在这里插入图片描述

七:抽象类

抽象类关键字abstract。

抽象类的基础知识大概参照《C#中的抽象类(abstract)》

Typescript中的抽象类例子如下:

abstract class GT{
    abstract siqu()  //因为没有具体的方法,所以我们这里不写括号
}
 
class bmw extends GT
{
    siqu(){
        console.log("x-driver");
    }
}
 
class benz extends GT
{
    siqu(){
        console.log("4matic");
    }
}
 
class aodi extends GT
{
    siqu(){
        console.log("quattro");
    }
}

有好的建议,请在下方输入你的评论。

欢迎访问个人博客
https://guanchao.site

欢迎访问小程序:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值