TypeScript面向对象编程(一)
什么是面向对象编程?
官方解释:面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。
通过查阅各种各样的对面向对象编程的解释,对面向对象有了一些理解:面向对象是相对于面向过程而言的。面向对象其实就是注重的是对象,以设定对象为基础,附上方法和属性来描述一个事件。而面向过程注重的是过程,也就是一个事情完成的步骤。例如:开车去高铁站。面向过程是:1.去那里取车 2.开什么车3.去高铁站的路怎么开4.到高铁站 面向对象:我、车:、高铁站,我开车去高铁站。
TypeScript 类的用法
TypeScript 是面向对象的 JavaScript。
类描述了所创建的对象共同的属性和方法。
TypeScript 支持面向对象的所有特性,比如 类、接口等。
TypeScript 类定义方式如下:
class a {
// 类作用域
}
定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员):
字段 − 字段是类里面声明的变量。字段表示对象的有关数据。
构造函数 − 类实例化时调用,可以为类的对象分配内存。
方法 − 方法为对象要执行的操作。
创建类的数据成员
以下实例我们声明了类 Car,包含字段为 name,构造函数在类实例化后初始化字段 name。
this 关键字表示当前类实例化的对象。注意构造函数的参数名与字段名相同,this.name 表示类的字段。
此外我们也在类中定义了一个方法 self()。
class Car {
// 字段
name:string;
// 构造函数
constructor(nmae:string) {
this.nmae= nmae
}
// 方法
self():void {
console.log("我的名字是 : "+this.nmae)
}
}
编译以上代码,得到以下 JavaScript 代码:
var Car = /** @class */ (function () {
// 构造函数
function Car(nmae) {
this.nmae = nmae;
}
// 方法
Car.prototype.self = function () {
console.log("我的名字是 : " + this.nmae);
};
return Car;
}());
创建实例化对象
我们使用 new 关键字来实例化类的对象,语法格式如下:
var object_name = new class_name([ arguments ])
类实例化时会调用构造函数,例如:
var obj = new Car("nmae")
类中的字段属性和方法可以使用 . 号来访问:
// 访问属性
obj.name
// 访问方法
obj.self()
完整实例
以下实例创建来一个 Car 类,然后通过关键字 new 来创建一个对象并访问属性和方法:
class Car {
// 字段
nmae:string;
// 构造函数
constructor(nmae:string) {
this.nmae = nmae
}
// 方法
self():void {
console.log("我的名字是 : "+this.nmae)
}
}
// 创建一个对象
var obj = new Car("lwl")
// 访问字段
console.log("我的名字是 : "+obj.nmae)
// 访问方法
obj.self()
编译以上代码,得到以下 JavaScript 代码:
var Car = /** @class */ (function () {
// 构造函数
function Car(nmae) {
this.nmae = nmae;
}
// 方法
Car.prototype.self = function () {
console.log("我的名字是 : " + this.nmae);
};
return Car;
}());
// 创建一个对象
var obj = new Car("lwl");
// 访问字段
console.log("我的名字是 : " + obj.nmae);
// 访问方法
obj.self();
static 关键字
static 关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。
class Staticnmae {
static name:string;
static self():void {
console.log("num 值为 "+ Staticnmae.name)
}
}
Staticnmae.name = 'lwl' // 初始化静态变量
StaticMem.self() // 调用静态方法