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()       // 调用静态方法