使用class + 类名 即可定义一个类,一个类中通常有3个成员:属性、构造函数、方法;

在类内部引用属性或方法事使用this调用,它表示我们访问的是类的成员。

我们使用new构造了Greeter类的一个实例。 它会调用之前定义的构造函数,创建一个Greeter类型的新对象,并执行构造函数初始化它。

 class People{
// 1.声明 name 变量
public name:string; // 2.构造函数
// 构造函数在外部无法直接访问
// 只在实例化的时候才执行,且仅仅执行 1 次
// 构造函数用于在实例化某对象时必须添加某属性
// 本例:实例化People时必须添加姓名,否则报错
constructor(name){
this.name=name;
}
// 3.方法
sayname(){
console.log(this.name);
}
} /*
*使用new对类进行实例化
*/
let li=new People('li');
// 实例化 xiao 时没有设置 name 属性值,报错
let xiao=new People();
li.sayname(); class Stu{
// 和上面例子对比可将 name 声明直接移动至 constructor 内
constructor(public name:string,age:string){ }
// constructor内添加 public/private/protected 对变量进行声明后此处可用 this.name调用,否则不可调用
// age 没有声明所以无法调用
say(){
console.log(this.name);
console.log(this.age);
}
} // 必须设置 name 属性值
let chen=new Stu();

构造函数要求实例化时必须设置name属性值,没有设置值具体报错信息如下:

继承

在TypeScript里,我们使用extends来创建子类。你可以看到HorseSnake类是基类Animal的子类,并且可以访问其属性和方法。

这个例子演示了如何在子类里可以重写父类的方法。 Snake类和Horse类都创建了move方法,重写了从Animal继承来的move方法,使得move方法根据不同的类而具有不同的功能。 注意,即使tom被声明为Animal类型,因为它的值是Horsetom.move(34)调用Horse里的重写方法:

包含constructor函数的派生类必须调用super(),它会执行基类的构造方法。

super的用法说明:

1. 子类的构造函数必须调用父类的构造函数,就是这么规定的
   constructor(name:string , sid:string){
super(name);
  }

2. super.functonName( ) 可以调用父类的其它方法

 class Animal{
public name:string; constructor(name:string){
this.name = name;
}
move(distanceMetres:number = 0){
console.log(`${this.name} moved ${distanceMetres}m`);
}
} class Snake extends Animal{
public age:string;
constructor(name:string,age:string){
super(name);
this.age=age;
}
move(distanceMetres=5){
console.log("snake...");
super.move(distanceMetres);
}
sayage(age){
alert(`${this.age}`);
}
} class Horse extends Animal{
constructor(name:string){
super(name);
}
move(distanceMetres=10){
console.log("horse...");
super.move(distanceMetres);
}
} let sam = new Snake('xiaobao','30');
let tom:Animal = new Horse('tommy'); // sam.move();
sam.sayage(this.age);
// console.log(sam.age);
// tom.move(150);

《Typecript 入门教程》 1、类的更多相关文章

  1. 《Typecript 入门教程》 3、接口

    转载:<TypeScript 中文入门教程> 3.接口 介绍 TypeScript的核心原则之一是对值所具有的shape进行类型检查. 它有时被称做“鸭式辨型法”或“结构性子类型化”. 在 ...

  2. 《Typecript 入门教程》 2、访问控制符:public、private、protected、readonly

    声明类的属性和方法时可以设置使用访问控制符,访问控制符设置类的属性和方法能不能在类的外部被访问 1. 默认为 public,使用public定义的属性和方法在类的内部和外部都可以访问 2. priva ...

  3. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  4. 转载:TypeScript 简介与《TypeScript 中文入门教程》

    简介 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构 ...

  5. 21分钟 MySQL 入门教程(转载!!!)

    21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...

  6. WCF入门教程(五)配置文件

    WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...

  7. WCF入门教程(三)定义服务协定--属性标签

    WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...

  8. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  9. WCF入门教程(一)简介

    WCF入门教程(一)简介 1.WCF是什么? WCF( Windows Communication Foundation), 是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NE ...

随机推荐

  1. 总结在Linux终端中进行算术运算的6种方式

    1.使用bash 使用双括号可以像C语言一样直接使用运算符进行计算. +)) a=$((*)) echo $a b=$(($a-)) echo $b d=$(($b/)) echo $d e=$(($ ...

  2. NFV

    转载: NFV介绍定义:NFV,即网络功能虚拟化,Network Function Virtualization.通过使用x86等通用性硬件以及虚拟化技术,来承载很多功能的软件处理.从而降低网络昂贵的 ...

  3. 在vmware中 centos7安装gooderp

    环境为windows 10系统,vmware 12,centos 7.4.centos安装了gnome桌面,用里面的终端来安装,自带的firefox浏览器. 增加用户 首先要新建一个用户来管理good ...

  4. power coefficient calculation -- post processing

    input: unscaled moment of one bladeoutput: power coefficient of a 3-blades wind/tidal turbine matlab ...

  5. 【Codeforces 1118D1】Coffee and Coursework (Easy version)

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 从小到大枚举天数. 然后贪心地,从大到小分配a[i]到各个天当中. a[n]分配到第1天,a[n-1]分配到第2天,...然后a[n-x]又分 ...

  6. 【Codeforces 372A】Counting Kangaroos is Fun

    [链接] 我是链接,点我呀:) [题意] 如果a[i]*2<=a[j]那么i袋鼠可以装进j袋鼠里面 每只袋鼠都只能装一只袋鼠 [题解] 假设最后的方案是(ai,bi) 这里(ai,bi)表示下标 ...

  7. MVC系统学习4—ModelMetaData

    在Mvc R2中,新引入了一些扩展方法,如后面带一个for的方法,这些扩展方法会根据Model的属性自定生成相应的Html元素,如Html.EditFor(Model=>Model.IsAppr ...

  8. python集合可以进行相减

    python集合可以进行相减 student = {'tom','jim','mary','tom','jack','rose'} print(student) print('rose' in stu ...

  9. 【翻译自mos文章】注意: ASMB process exiting due to lack of ASM file activity

    注意: ASMB process exiting due to lack of ASM file activity 參考原文: NOTE: ASMB process exiting due to la ...

  10. JQuery之操作array

    1:split 函数将字符串按某个字符分割,将分割后的结果存入字符串数组中 function SplitUsersInformation(users) { var usersArray = users ...