前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript学习第四篇 - 类与继承

TypeScript学习第四篇 - 类与继承

作者头像
越陌度阡
发布2020-11-26 14:44:30
3610
发布2020-11-26 14:44:30
举报

TypeSctipt中类与继承的方法与ES6中基本一致,写法如下:

1. 定义类

代码语言:javascript
复制
class Person{
    name:String;
    constructor(name:String){
        this.name = name;
    }
    getName():String{
        return this.name;
    }
    setName(name:String):void{
        this.name = name;
    }
};

var p  = new Person('张三');
console.log(p.getName());
// 张三
p.setName('李四');
console.log(p.getName());
// 李四

2. 继承类

代码语言:javascript
复制
class Me extends Person{
    constructor(name:String){
        // 调用父类型的构造器
        super(name);
    }
    // 子类方法与父类方法同名时,会覆盖父类的方法
    getName():String{
        return '我是'+this.name;
    }
}
var man = new Me('王五');
console.log(man.getName());
// 我是王五

3. TypeScript里关于类的修饰符,与C++一样,主要有以下几种:

(1). public 公有。在类里面、子类里面、类外面都可以访问。属性如果不加修饰符,默认就是公有。

代码语言:javascript
复制
class Person{
    public name:String;
    constructor(name:String){
        this.name = name;
    }
    getName():String{
        return this.name;
    }
    setName(name:String):void{
        this.name = name;
    }
};

var firstMan = new Person('张三');

// name 在类外面可以访问
console.log(firstMan.name);
// 张三

// name 在类里面可以访问
console.log(firstMan.getName());
// 张三

class Boy extends Person{
    constructor(name:String){
        super(name);
    }
    getName():String{
        return this.name;
    }  
};
var thirdMan = new Boy('李四');

// name 在子类里可以访问
console.log(thirdMan.getName());
// 李四

(2).protected 保护类型。在类里面、子类里面可以访问,在类外面没法访问。

代码语言:javascript
复制
class Person{
    protected name:String;
    constructor(name:String){
        this.name = name;
    }
    getName():String{
        return this.name;
    }
    setName(name:String):void{
        this.name = name;
    }
};

var firstMan = new Person('张三');

// name 在类外面不可以访问
console.log(firstMan.name);
// 报错

// name 在类里面可以访问
console.log(firstMan.getName());
// 张三

class Boy extends Person{
    constructor(name:String){
        super(name);
    }
    getName():String{
        return this.name;
    }  
};
var thirdMan = new Boy('李四');

// name 在子类里可以访问
console.log(thirdMan.getName());
// 李四

(3). private 私有。 在类里面可以访问,在子类和外面没法访问。

代码语言:javascript
复制
class Person{
    private name:String;
    constructor(name:String){
        this.name = name;
    }
    getName():String{
        return this.name;
    }
    setName(name:String):void{
        this.name = name;
    }
};

var firstMan = new Person('张三');

// name 在类外面不可以访问
console.log(firstMan.name);
// 报错

// name 在类里面可以访问
console.log(firstMan.getName());
// 张三

class Boy extends Person{
    constructor(name:String){
        super(name);
    }
    getName():String{
        return this.name;
    }  
};
var thirdMan = new Boy('李四');

// name 在子类里不可以访问
console.log(thirdMan.getName());
// 报错
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档