(function () {
/**
* abstract 开头的是抽象类,
* 抽象类和其他区别不大,只是不能用来创建对象
* 抽象类专门是让别人继承的的类
*/
abstract class Animal {
// 需要先定义,才能在constructor中this指向
name: string;
age: number; // 构造函数,会在对象创建时调用
// new Dog() 的时候,就会调用constructor
constructor(name: string, age: number) {
/**
* 在实例方法中,this就表示当前的实例
* 在构造函数中当前对象就是当前新建的那个对象
* 可以通过this指向新建的对象中添加属性
*/ this.name = name;
this.age = age;
} /**
* 该方法不适用所有动物,所以可以改为抽象方法
* 抽象方法使用aabstract开头,没有方法体
* 抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写
*/
/*sayHello() {
console.log(`Dog ${this.name} is barking, woofing...`)
}*/
abstract sayHello():void;
} // 定义一个表示够的类
// 使Dog类继承Animal的属性
/**
* Dog extends Animal
* 此时Animal被称为父类, Dog被称为子类
* 使用继承后,子类将会继承父类所有的属性和方法
* -通过继承可以将多个类中共有的代码卸载一个勒种,这样只需要写一次即可让所有子类都同时有父类中的属性和方法
* -如果希望在子类中添加一些弗雷中没有的属性或方法,直接加就好
* -如果在子类中添加了和父类方法名一致的方法,则子类方法会覆盖父类方法, 这种子类覆盖父类方法的形式,称之为 方法重写
*/
class Dog extends Animal {
run() {
console.log(`${this.name} is running...`)
}
sayHello(){
console.log(`Dog ${this.name} is barking, woofing...`)
}
} class Cat extends Animal {
sayHello() {
console.log(`Cat ${this.name} is miao....`)
}
} const dog = new Dog('Tom', 4);
const cat = new Cat('Max', 3);
console.log(dog);
dog.sayHello();
dog.run();
cat.sayHello();
})()

最新文章

  1. ig WebDataGrid清除选中行
  2. [Hadoop] Hadoop学习笔记之Hadoop基础
  3. Missing (Mono Script), Missing Prefab
  4. 【php学习】PHP 入门经典第一章笔记
  5. LeetCode 2 Add Two Sum 解题报告
  6. redis 应用场景
  7. 基于sqlite的Qt 数据库封装
  8. mongodb在ubuntu下的couldn‘t remove fs lock errno:9 Bad file descriptor的错误
  9. 《Python CookBook2》 第一章 文本 - 控制大小写 && 访问子字符串
  10. Win7中,取消共享文件夹后有个小锁
  11. IOS中设置状态栏的状态
  12. linux 获取文件系统信息(磁盘信息)
  13. 监测scroll
  14. Html5 拖放上传图片
  15. iOS-王云鹤 APP首次启动显示用户指导
  16. JSON与JAVA的数据转换
  17. vs2015添加T4模版
  18. 用echartsjs 实现动态绘制折线、柱状等图形,并实现多图联动效果
  19. luogu P4842 城市旅行
  20. 【云服务器部署】---Linux下安装MySQL

热门文章

  1. Linux系统安全:SNAT和DNAT的实现
  2. iframe 父子页面调用vue函数,并解决跨域问题,宽度自适应
  3. BGP知识点总结(一)
  4. vue input输入框关键字筛选检索列表数据展示
  5. (四)用go实现红黑树
  6. vscode中使用powershell显示分支名
  7. pyg安装
  8. linux升级系统内核版导致死锁
  9. 批处理命令for循环(cmd命令)
  10. thunar文件管理器修改默认的关联的终端