一、类的属性

public: 公有,

private: 私有,不能在声明它的类的外部访问,只能在类内部访问

protect: 保护,不能在声明它的类的外部访问,但继承者除外

readonly 只读属性,必须在声明时或构造函数里被初始化

static静态属性,无需实例化就可以访问静态成员

super()方法,它会执行基类的构造方法

class Grid {
static origin = {x: , y: };
calculateDistanceFromOrigin(point: {x: number; y: number;}) {
let xDist = (point.x - Grid.origin.x);
let yDist = (point.y - Grid.origin.y);
return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;
}
constructor (public scale: number) { }
} let grid1 = new Grid(1.0); // 1x scale
let grid2 = new Grid(5.0); // 5x scale console.log(grid1.calculateDistanceFromOrigin({x: , y: }));
console.log(grid2.calculateDistanceFromOrigin({x: , y: }));

二、类的存取,set() 和 get()

let passcode = "secret passcode";

class Employee {
private _fullName: string; get fullName(): string {
return this._fullName;
} set fullName(newName: string) {
if (passcode && passcode == "secret passcode") {
this._fullName = newName;
}
else {
console.log("Error: Unauthorized update of employee!");
}
}
} let employee = new Employee();
employee.fullName = "Bob Smith";
if (employee.fullName) {
alert(employee.fullName);
}

三、类的继承  extends

class Animal {
name:string;
constructor(theName: string) { this.name = theName; }
move(distanceInMeters: number = ) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
} class Snake extends Animal {
constructor(name: string) { super(name); }
move(distanceInMeters = ) {
console.log("Slithering...");
super.move(distanceInMeters);
}
} class Horse extends Animal {
constructor(name: string) { super(name); }
move(distanceInMeters = ) {
console.log("Galloping...");
super.move(distanceInMeters);
}
} let sam = new Snake("Sammy the Python");
let tom: Animal = new Horse("Tommy the Palomino"); sam.move();
tom.move();

四、抽象类:abstract,派生类的基类使用。它们一般不会直接被实例化。

abstract class Department{
constructor(public name:string){}
printName():void{
console.log('Department name:'+this.name);
}
abstract printMeeting():void;//抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
}
class AcountingDepartment extends Department{
constructor(){
super('Accounting and Auditing');
}
printMeeting():void{
console.log('The Accounting Department meets each Monday at 10am.');
}
generateReports():void{
console.log('Generating accounting reports...');
}
}
let department:Department;
department=new Department() //error
let department=new AcountingDepartment();
department.printName();
department.printMeeting();
//department.generateReports();

最新文章

  1. 微信小程序之明源商城系列-01-商城介绍及开发准备
  2. JavaScript、全选反选-课堂笔记
  3. javax mail网址
  4. Xamarin.Android之UI Test简单入门
  5. HTML5[5]:在移动端禁用长按选中文本功能
  6. 关于js的兼容问题(小办法)!
  7. ZOJ 3826
  8. linux重定向总结:如何将shell命令的输出信息自动输出到文件中保存
  9. 《VTL语法参考指南》中文版[转]
  10. 腾讯应用开发3006 : name lookup timed out 错误
  11. [python标准库]Pickle模块
  12. 接口测试入门(2)--get和post初级请求/使用httpclient做一个获取信息list的请求(需要登录才可以)
  13. 实验吧 deeeeeeaaaaaadbeeeeeeeeeef-20
  14. 如何使用kafka增加topic的备份数量,让业务更上一层楼
  15. es6 语法 (Proxy和Reflect 的对比)
  16. LeetCode(51):N皇后
  17. Tensorflow手写数字识别---MNIST
  18. 如何使用JDBC删除一条记录
  19. Java Web c3p0 pool池泄漏优化与日志分析
  20. C#基础第八天-作业答案-设计类-面向对象方式实现两个帐户之间转账

热门文章

  1. D3学习笔记一
  2. Java中break、continue及标签等跳转语句的使用[上]
  3. Android OpenGL教程-第五课【转】
  4. Scrapy框架学习(二)Scrapy入门
  5. 关于vue的常识问题及解决方法
  6. 二:Redis数据类型
  7. JSON 转 VO
  8. java导入excle表格,并且对表格进行相应的修改,并对表格数据进行整理,最后导出本地表格等一系列操作
  9. System.arraycopy的测试
  10. Filter内容