TS面向对象学习

  • 什么是面向对象?(之前在js中已经提及到了,可以翻看前面的博客(类与对象))

    • 面向对象是一种编程思想,这里简单点说,面向对象其实就是字面上的意思,面向就是对着的意思,对象就是一个名词,而所谓的面向对象的编程语言(OA)就是我们在写程序写代码的时候,所有的操作都是通过对象去操作的,比如面向ak47,这时ak47就是一个对象,那我们就可以操作ak47的一些属性去帮我们做一些事,射击…
    • 要想学好面向对象,就要了解什么是对象? 首先我们问一下自己,程序是用来干什么的?程序实际上就是对我们现实事物中一个抽象,那抽象对应的就是具体,举个例子:我在马路上见到一个很可爱的狗,那么这时候我就很想将这个狗带回家,但是家里人不允许,那么我可以将这个狗子用手机拍下来带回家。这个例子中的狗子对应的就是具体,因为它是具体的事物,而我手机中的照片对应的就是抽象,我将一个具体的事物,抽象成为一张简单的照片,回到程序的世界,我们经常在网路上玩到的游戏,看到的报纸,就是对具体事物的一个抽象,也就是说,程序就是对具体事物的一个抽象,而那些被描述道程序里面的抽象就是对象,比如我们的游戏人物,武器,服饰等…都是对象,当一个具体的事物抽象到程序里面就是一个对象!也正正验证了那一句万物皆对象!
    • 好处就是我们在程序里面先干什么,就找到对应的对象,调用它自带的属性或方法就可以了,如我想枪的子弹射击,就会找到该对象的射击方法调用即可……
  • 举例来说:

    • 操作浏览器要使用window对象

    • 操作网页要使用document对象

    • 操作控制台要使用console对象

  • 在程序中所有的对象都被分成了两个部分数据和功能,以人为例,人的姓名、性别、年龄、身高、体重等属于数据,人可以说话、走路、吃饭、睡觉这些属于人的功能。数据在对象中被成为属性,而功能就被称为方法。所以简而言之,在程序中一切皆是对象。

1. 类(class

  • 要想面向对象,操作对象,首先便要拥有对象,那么下一个问题就是如何创建对象。要创建对象,必须要先定义类,所谓的类可以理解为对象的模型,程序中可以根据类创建指定类型的对象,举例来说:可以通过Person类来创建人的对象,通过Dog类创建狗的对象,通过Car类来创建汽车的对象,不同的类可以用来创建不同的对象。

代码展示:

  • 01-类的简述.ts
/* ------1.最简单的定义类的方法就是使用class关键字(这种方法一般很少用,局限性太大) -----------*/
/*
* 对象中主要包含了两个部分:
* 属性
* 方法
* */
class person{
// 实例属性
name:string = '孙悟空'
age:number = 18
sayHello(){
console.log('你好!我是孙悟空!');
}
}

// 调用该类之前需实例化(使用类)
const per = new person

console.log(per.name);//调用实例化后类的属性
console.log(per.age);//调用实例化后类的属性
per.sayHello()//调用实例化后类的方法
/* ------------------------------------------------------------------------------------ */



/* ------------2.class中的一些关键字(一般很少使用,多个关键字之间可以结合使用)--------------*/
class person1{
// (2).readonly关键字用于将一个属性设置为只读,不能修改
// readonly开头的属性表示一个只读的属性无法修改(修改就会报错)
name:string = '猪八戒'

// (1).static关键字用于将对应类中的某一个属性变成静态属性,使之不用通过new就能调用
// 使用static开头的属性是静态属性(类属性),可以直接通过类去访问
static age:number = 19
sayHello(){
console.log('你好!我是猪八戒!');
}
}

// 直接调用person1里面的age即可(无需再实例化)
console.log(person1.age);
/* ------------------------------------------------------------------------------------ */


/* ---------------------- 3.构造函数(创建类最常用)以及this指向 ---------------------------*/
// 我们创造类一般是想让他每一次new都能帮我们生成属性方法相似但是值却不同的对象,构造函数就能做到这一点
class Dog{
// 1.首先定义属性
name:string;
age:number;
bark(msg:string){
console.log(msg);
}

// 2.设置构造函数:constructor
// 构造函数会在对象创建时调用(当该类被new的时候调用)
constructor(name: string, age: number){
// 在实例方法中,this就表示当前当前的实例
// 在构造函数中当前对象就是当前新建的那个对象
// 可以通过this向新建的对象中添加属性
this.name = name;
this.age = age;
this.bark(`我是${this.name}`)
}
}

// 调用类
const dog = new Dog('旺财',3)
const dog1 = new Dog('小黑',2)
const dog2 = new Dog('小白',4)
console.log(dog);
console.log(dog1);
console.log(dog2);
/* ------------------------------------------------------------------------------------ */

  • 运行编译指令
tsc .\01-类的简介.ts

结果展示:

image