使用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. python爬虫23 | 手机,这次要让你上来自己动了。这就是 Appium+Python 的牛x之处

    你有没有想过让你的手机帮你自动完成某些事情 比如自动帮你抢红包 有些软件不是有签到活动么 这些傻瓜式的操作 能不能让手机自动签到呢? 自动帮你叫外卖 自动帮你打电话 等等 还有 对于手机上的一些比较难 ...

  2. javaHttp请求,接收到的是中文乱码如何处理

    可在service()方法中加日志,看哪种不是乱码 例如,中文乱码的话,中文编码一般有 UTF-8,GBK,ISO-8859-1 加日志为 List<String> list = new ...

  3. 浅谈href=与href=javascript_void(0)的区别

    "#"包含了一个位置信息.默认的锚点是#top 也就是网页的顶端.而javascript:void(0)  仅仅表示一个死链接,这就是为什么有的时候页面很长,浏览链接明明是#可是跳 ...

  4. Java基础学习总结(86)——Java异常处理机制Exception抛出异常时throw和throws用法详解

    什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...

  5. CodeForcesGym 100753K Upside down primes

    Upside down primes Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForc ...

  6. hdu 1853 KM算法

    #include<stdio.h> #include<math.h> #include<string.h> #define N 200 #define inf 99 ...

  7. Mzc家中的男家丁

    题目背景 mzc与djn的…还没有众人皆知,所以我们要来宣传一下. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁,现在mzc要将她们全都聚集起来(干什么就不知道了).现在知道mzc与男家丁们互 ...

  8. MyBatis与Spring MVC结合时,使用DAO注入出现:Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

    错误源自使用了这个例子:http://www.yihaomen.com/article/java/336.htm,如果运行时会出现如下错误: Invocation of init method fai ...

  9. fibonacci数列的题目——剑指Offer

    https://www.nowcoder.net/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160&tPage= ...

  10. C++学习之虚函数与纯虚函数

    面向对象程序设计(object-oriented programming)的核心思想是数据抽象.继承.动态绑定.通过数据抽象,可以使类的接口与实现分离,使用继承,可以更容易地定义与其他类相似但不完全相 ...