ts中定义类

class Person{name:string;  //属性  前面省略了public关键词constructor(n:string){  //构造函数   实例化类的时候触发的方法this.name = n;}run():void{alert(this.name);}
}
var p = new Person('lisi');
p.run()

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('lisi');
alert(p.getName());
p.setName('wanwu');
alert(p.getName());

继承

class Person{name:string;constructor(name:string){this.name = name;}run():string{return `${this.name}在运动`;}
}
var p = new Person('lisi');
alert(p.run());class Web extends Person{constructor(name:string){super(name);}run():string{return `${this.name}在运动--子类`}work(){alert(`${this.name}在工作`)}
}var w = new Web('wanwu');
alert(w.run());
w.work();

修饰符

  1. public :公有 在当前类里面、 子类 、类外面都可以访问
  2. protected:保护类型 在当前类里面、子类里面可以访问 ,在类外部没法访问
  3. private :私有 在当前类里面可以访问,子类、类外部都没法访问

public

class Person{public name:string;constructor(name:string){this.name = name;}run():string{return `${this.name}在运动`;}
}
var p = new Person('lisi');
alert(p.run());class Web extends Person{constructor(name:string){super(name);}run():string{return `${this.name}在运动--子类`}work(){alert(`${this.name}在工作`)}
}
var w = new Web('wanwu');
alert(w.run());

protected

class Person{protected name:string;constructor(name:string){this.name = name;}run():string{return `${this.name}在运动`;}
}
var p = new Person('lisi');
alert(p.run());class Web extends Person{constructor(name:string){super(name);}run():string{return `${this.name}在运动--子类`}work(){alert(`${this.name}在工作`)}
}
var w = new Web('wanwu');
alert(w.run());

静态属性 静态方法

class Person{public name:string;  /*公有属性*/static sex = '男' //静态属性constructor(name:string){this.name=name;}run():string{return `${this.name}在运动`}static print(){// alert('print方法'+this.name);alert('print方法'+Person.sex);}
}var p = new Person('lisi');
Person.print();

多态

多态:父类定义一个方法不去实现,让继承它的子类去实现,每一个子类有不同的表现
多态属性继承

父类有方法,子类也有同样的方法

class Animal{name:string;constructor(name:string){this.name = name;}//具体吃什么,不知道,具体吃什么,让继承它的子类去实现,每一个子类的表现不一样eat(){console.log('吃的方法')}
}class Dog extends Animal{constructor(name:string){super(name);}eat(){return this.name +'吃骨头'}
}
var d = new Dog('d');
alert(d.eat());class Cat extends Animal{constructor(name:string){super(name);}eat(){return this.name +'吃鱼'}
}
var c = new Cat('c');
alert(c.eat());

父类有方法,子类没有同样的方法

class Animal{name:string;constructor(name:string){this.name = name;}//具体吃什么,不知道,具体吃什么,让继承它的子类去实现,每一个子类的表现不一样eat(){console.log('吃的方法')}
}class Dog extends Animal{constructor(name:string){super(name);}eat(){return this.name +'吃骨头'}
}
var d = new Dog('d');
alert(d.eat());class Cat extends Animal{constructor(name:string){super(name);}// eat(){//     return this.name +'吃鱼'// }
}
var c = new Cat('c');
alert(c.eat());

抽象类

抽象类:它是提供其它继承的基类,不能直接被实例化

  1. abstract关键字定义抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现
  2. abstract抽象方法只能放在抽象类里面
  3. 抽象类和抽象方法用来定义标准,标准:Animal这个类要求它的子类必须包含相同的方法,如eat()

直接被实例化,报错

abstract class Animal{public name:string;constructor(name:string){this.name = name;}abstract eat():any;run(){console.log('运动')}
}var a = new Animal();

父类定义的抽象方法,子类没有定义,报错

abstract class Animal{public name:string;constructor(name:string){this.name = name;}abstract eat():any;run(){console.log('运动')}
}class Dog extends Animal{constructor(name:string){super(name);}// eat(){//     console.log(this.name+'吃骨头')// }}

正常

类非抽象方法,子类可以不写

abstract class Animal{public name:string;constructor(name:string){this.name = name;}abstract eat():any;run(){console.log('运动')}
}class Dog extends Animal{constructor(name:string){super(name);}eat(){console.log(this.name+'吃骨头')}}var d = new Dog('d');
d.eat()class Cat extends Animal{constructor(name:string){super(name);}eat(){console.log(this.name+'吃鱼')}
}var c = new Cat('c');
c.eat()

TypeScript--类相关推荐

  1. .NET手撸绘制TypeScript类图——下篇

    .NET手撸绘制TypeScript类图--下篇 在上篇的文章中,我们介绍了如何使用 .NET解析 TypeScript,这篇将介绍如何使用代码将类图渲染出来. 类型定义渲染 不出意外,我们继续使用  ...

  2. .NET手撸绘制TypeScript类图——上篇

    .NET手撸绘制TypeScript类图--上篇 近年来随着交互界面的精细化, TypeScript越来越流行,前端的设计也越来复杂,而 类图正是用简单的箭头和方块,反映对象与对象之间关系/依赖的好方 ...

  3. typescript get方法_.NET手撸绘制TypeScript类图——上篇

    .NET手撸绘制TypeScript类图--上篇 近年来随着交互界面的精细化,TypeScript越来越流行,前端的设计也越来复杂,而类图正是用简单的箭头和方块,反映对象与对象之间关系/依赖的好方式. ...

  4. TypeScript 类(Class)

    TypeScript 类(Class) 自 ES6 起,终于迎来了 class,对于开发者来说,终于可以使用基于类的面向对象式编程.TypeScript 在原 ES6 中类的基础上,还添加了一些新的功 ...

  5. 三分钟快速了解typeScript 类

    typeScript 类 类描述了所创建的对象共同的属性和方法. 类的定义 继承 类里面的修饰符 静态属性 静态方法 抽象类 继承 多态 类的定义 class person {name:string; ...

  6. Typescript类,泛型,各种类型工具

    一.TypeScript 类 一个类可以包含以下几个模块: 1.属性 1.1 类属性 1.2 实例属性 2.构造函数(在python中叫初始化函数) 该函数在类实例化时会被立即调用 3.方法(也是函数 ...

  7. 05 TypeScript 类的使用

    目录 1.1 类的基本使用 1.2 类的继承 1.3 static和instanceof 1.4类中的修饰符 1.5 getter与setter 1.6 抽象类 1.7 implements子句 1. ...

  8. TypeScript类

    目录 1-1.类的基本使用 1-2.类的继承 1-3.static与instanceof 1-4.类中的修饰符 1-5.getter与setter 1-6.抽象类 1-7.implements子句 1 ...

  9. TypeScript = 类

    TypeScript笔记 5. TypeScript => 类 // 1. ts如何定义类 /* class Person {name:string;constructor(name:strin ...

  10. TypeScript 接口和TypeScript类

    目录 一.TypeScript 接口 1.TypeScript 接口的定义和简单使用 2.联合类型和接口 3.接口和数组 4.接口继承 二.TypeScript 类 1.TypeScript 类的定义 ...

最新文章

  1. 解决烦人的img与input不能水平对齐的问题
  2. node建立博客系统遇到的问题,1,乱码。2,multer的使用错误。3使用session问题...
  3. Linux下使用popen()执行shell命令
  4. OpenCV3.0.0下的视频稳像代码,效果不错哦
  5. 微服务框架Go-Micro集成Nacos实战之服务注册与发现
  6. 最精美详尽的 HTTPS 原理图
  7. 如何优雅地在云上“摆摊” 直播带货,这些技术很重要
  8. 怎么才能在APP里实现移动端车牌识别功能?
  9. vc++开发学习二(模态对话框和非模态对话框的创建和销毁)
  10. 软件间对接时,常用的接口类型和协议类型有哪些
  11. 基因编辑最新进展2021年5月
  12. 谷歌邮箱SMTP小白教程
  13. 51单片机最小系统板
  14. 智慧云教育平台实战项目笔记
  15. 浙江大学计算机学院 金小刚,金小刚-虚拟现实与交互技术研究院
  16. 网络使用工具HttpWatch的使用方法
  17. 考过证券从业资格证的朋友们用的什么APP呢?
  18. 地理科学与计算机技术的关系,地理信息系统与地理学的关系
  19. CSDN取消手机绑定
  20. 力扣1845——座位预约管理系统(优先队列)

热门文章

  1. 深入理解ByteBuffer
  2. 如何解决多地开视频会议直播问题?
  3. JavaScript内存优化
  4. [转载]正确解决:坑爹的0xc000007b——应用程序无法正常启动
  5. Javascript用递归的方式遍历json数组
  6. Javascript中的Callback方法浅析
  7. URAL 1353 Milliard Vasya's Function DP
  8. Extranet MPLS ×××
  9. HDU-1128 Self Numbers 筛选
  10. Altiris 7.1 插件