TypeScript类与对象:面向对象编程的基础

这篇具有很好参考价值的文章主要介绍了TypeScript类与对象:面向对象编程的基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

TypeScript 是 JavaScript 的一个超集,它为 JavaScript 添加了静态类型、类、接口和装饰器等面向对象编程的特性,并通过编译器将 TypeScript 编译成JavaScript,可以在任何 JavaScript 环境中运行,因此成为了 JavaScript 开发中不可或缺的工具。面向对象编程是现代编程语言的基础,而 TypeScript 的类与对象是实现面向对象编程的基础。

类的定义

  • 和 JavaScript 一样,TypeScript 中的类也使用 class 关键字进行定义,定义类的语法如下:

    class ClassName {
        //类成员的定义
    }
    
  • 类成员可以包含属性方法构造函数静态成员等。

属性

  • 类的属性可以通过直接在类中定义变量的方式实现。属性可以是普通的变量,也可以是类对象。

    class Person {
        name: string;
        age: number;
    }
    
  • 在上面的例子中,我们定义了一个名为 Person 的类,它有两个属性,一个是 name ,一个是 age 。

方法

  • 类的方法可以使用 function 关键字进行定义,也可以使用箭头函数进行定义。方法可以有返回值,也可以没有返回值

    class Person {
        name: string;
        age: number;
        sayHello():void {
            console.log(`Hello, my name is ${this.name}, I'm ${this.age} years old`);
        }
        // 或者使用箭头函数的方式:sayHello: () => console.log(`Hello, my name is ${this.name}, I'm ${this.age} years old`)
    }
    
  • 在上面的例子中,我们定义了一个名为 Person 的类,它有两个属性,一个是 name ,一个是 age。还定义了一个名为 sayHello 的方法,它没有返回值,当被调用时,会输出当前对象的 name 和 age 。

构造函数

  • 类的构造函数用于初始化类的对象。和 JavaScript 一样,TypeScript 的构造函数使用 constructor 关键字进行定义。

    class Person {
        name: string;
        age: number;
        constructor(name: string, age: number) {
            this.name = name;
            this.age = age;
        }
    }
    
  • 在上面的例子中,我们定义了一个名为 Person 的类,它有两个属性,一个是 name ,一个是 age 。还定义了一个构造函数,它会接受一个名为 name 的字符串和一个名为 age 的数值,用于初始化当前对象的 name 和 age 属性。

静态成员

  • 静态成员用于在类的实例之间共享数据。在 TypeScript 中,静态成员使用 static 关键字进行定义。

    class Person {
        name: string;
        age: number;
        static total: number = 0;
        constructor(name: string, age: number) {
            this.name = name;
            this.age = age;
            Person.total++;
        }
    }
    
  • 在上面的例子中,我们定义了一个名为 Person 的类,它有两个属性,一个是 name ,一个是 age 。还定义了一个静态成员 total ,用于记录当前类已经创建的对象的个数。每当构造函数被调用时,就会将 total 加 1 ,从而实现对 total 的更新。

对象的创建

  • 在 TypeScript 中,创建对象需要先创建类的实例。创建类实例的方式有两种:

使用 new 关键字

  • 使用 new 关键字创建类实例是最常用的方式。

    let person1 = new Person("Tom", 18);
    
  • 在上面的例子中,我们创建了一个名为 person1 的变量,它是 Person 类的实例,使用构造函数初始化了它的 name 和 age 属性。

使用对象字面量

  • 使用对象字面量创建类实例通常用于创建没有自定义构造函数的类。

    let person2: Person = {
        name: "Jerry",
        age: 20,
        sayHello: () => console.log("Hello")
    };
    
  • 在上面的例子中,我们创建了一个名为 person2 的变量,它是 Person 类的实例,使用对象字面量初始化了它的 name、age 和 sayHello 属性。

继承与多态

继承

  • 继承是面向对象编程中的一种重要概念,它允许一个类从另一个类中继承属性方法。和 JavaScript 一样,在 TypeScript 中,继承使用 extends 关键字进行定义。

    class Student extends Person {
        grade: number;
        constructor(name: string, age: number, grade: number) {
            super(name, age);
            this.grade = grade;
        }
        sayHello(): void{
            console.log(`Hello, my name is ${this.name}, I'm ${this.age} years old, I'm in grade ${this.grade}`);
        }
    }
    
  • 在上面的例子中,我们定义了一个名为 Student 的类,它继承了 Person 类的所有属性和方法,并增加了一个名为 grade 的属性,用于表示学生的年级。还重写了父类的 sayHello 方法,用于输出当前对象的所有属性。

多态

  • 多态是面向对象编程中的一种重要概念,它允许不同对象调用相同方法的行为表现不同。在 TypeScript 中,实现多态需要使用抽象类接口

  • 抽象类是一种不能被直接实例化的类,它只能被继承。抽象类可以包含抽象方法普通方法

    • 抽象方法是没有实现的方法,它的实现需要在子类中完成
    abstract class Animal {
        abstract makeSound(): void;
        move(): void {
            console.log("I'm moving");
        }
    }
    
  • 在上面的例子中,我们定义了一个名为 Animal 的抽象类,它有一个抽象方法 makeSound 和一个普通方法 move 。makeSound 方法没有实现,需要在子类中完成。

  • 接口是一种用于定义对象的结构、属性和方法的类型。

    • 接口只是一个类型声明,它没有实现任何行为
    interface Shape {
        area(): number;
    }
    class Circle implements Shape {
        radius: number;
        constructor(radius: number) {
            this.radius = radius;
        }
        area(): number {
            return this.radius * this.radius * Math.PI;
        }
    }
    class Square implements Shape {
        length: number;
        constructor(length: number) {
            this.length = length;
        }
        area(): number {
            return this.length * this.length;
        }
    }
    
  • 在上面的例子中,我们定义了一个名为 Shape 的接口,它有一个名为 area 的方法。还定义了两个实现了 Shape 接口的类,Circle 和 Square ,它们都实现了 area 方法,但是计算面积的方式不同。

总结

类与对象是面向对象编程的基础,通过类的定义,我们可以创建对象,并封装属性和方法。通过继承和多态,我们可以实现代码的复用和扩展。TypeScript 通过添加静态类型、类、接口和装饰器等特性,进一步增强了 JavaScript 的面向对象编程能力。熟练掌握 TypeScript 的类与对象,可以帮助我们快速开发高质量的JavaScript 应用程序。文章来源地址https://www.toymoban.com/news/detail-490280.html

到了这里,关于TypeScript类与对象:面向对象编程的基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java基础教程】(七)面向对象篇 · 第一讲:上干货!面向对象的特性、类与对象、内存结构引用分析、垃圾收集器 GC处理、封装性详解、构造方法、匿名对象、简单 Java 类~

    程序是将数据和逻辑封装在一起的代码段。在Java中,方法是常用的代码段封装方式。然而,在Java中,方法必须存在于一个类中才能使用。因此,我们将进入本章的核心内容——面向对象编程。 利用面向对象设计的程序可以实现代码的重用,并方便开发者进行项目维护。面向

    2024年02月13日
    浏览(33)
  • 第08章_面向对象编程(高级)(static,单例设计模式,理解mian方法,代码块,final,抽象类与抽象方法,接口,内部类,枚举类,注解,包装类)

    回顾类中的实例变量(即非static的成员变量) 创建两个Circle对象: Circle类中的变量radius是一个实例变量(instance variable),它属于类的每一个对象,c1中的radius变化不会影响c2的radius,反之亦然。 如果想让一个成员变量被类的所有实例所共享,就用static修饰即可,称为类变量(

    2024年01月25日
    浏览(40)
  • 【java】面向对象的编程基础

    true false 这里输入set和get可以自动将函数补全,传参初始化在构造属性之后 cc ccccc coleak 这里说明先构造属性,再执行代码块,再初始化 静态代码块 4 4 我是静态变量初始化 我是静态代码块 我是成员变量初始化 我是普通代码块 我是构造方法 快速构造,点击生成,构造函数,

    2023年04月16日
    浏览(31)
  • 第七章 面向对象编程(基础)

    (1)类是抽象的,概念的,代表一类事物,比如人类、猫类... 即它是数据类型。 (2)对象是具体的,实际的,代表一个具体事物,即实例。 (3)类是对象的模板,对象是类的一个个体,对应一个实例。 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对

    2024年02月06日
    浏览(71)
  • 【python】08.面向对象编程基础

    活在当下的程序员应该都听过\\\"面向对象编程\\\"一词,也经常有人问能不能用一句话解释下什么是\\\"面向对象编程\\\",我们先来看看比较正式的说法。 \\\"把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部

    2024年01月20日
    浏览(39)
  • Java面向对象01——类与对象

    大家好,我是白夜,今天和大家聊聊类与对象 面向过程编程 C 语言就是面向过程编程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 面向对象编程 JAVA 是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 举

    2024年04月08日
    浏览(35)
  • Java基础(七)面向对象编程(高级)

    回顾类中的实例变量(即非static的成员变量) 创建两个Circle对象: Circle类中的变量radius是一个实例变量(instance variable),它属于类的每一个对象,c1中的radius变化不会影响c2的radius,反之亦然。 如果想让一个成员变量被类的所有实例所共享,就用static修饰即可,称为类变量(

    2023年04月16日
    浏览(29)
  • C++ 递归与面向对象编程基础

    递归是一种使函数调用自身的技术。这种技术提供了一种将复杂问题分解为简单问题的方法,从而更容易解决问题。 递归可能有点难以理解。理解其工作原理的最佳方法是通过实验来尝试。 将两个数字相加很容易做到,但将一系列数字相加就更复杂了。在下面的示例中,通

    2024年04月16日
    浏览(26)
  • 【C#基础】C# 面向对象编程

    序号 系列文章 5 【C#基础】C# 运算符总结 6 【C#基础】C# 常用语句讲解 7 【C#基础】C# 常用数据结构 😊大家好,我是writer桑,前面一章已经学习了 C# 中的常用数据结构,那本章就开始学习 C# 程序中面向对象编程的知识,希望看完大家能够有所收获,感谢支持! 面向对象编程

    2024年02月04日
    浏览(42)
  • 第九单元 面向对象一:类与对象

    假设,班级里40位同学,我们用程序保存40位学生的信息:学号,姓名,性别,生日,身份证号。如果是你,你会怎么实现? 小菜同学拿到这个题,奋书疾笔,马上写出如下代码:   那如果是有4000,4万?你是不是立马从入门到卸载了? 面向对象来告诉你解决方案!! 面向对

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包