TypeScript面向对象 02

news2024/11/28 6:46:49

抽象类

abstract开头的类是抽象类。抽象类和其他类区别不大,只是不能用来创建对象。抽象类就是专门用来被继承的类

抽象类中可以添加抽象方法。定义一个抽象方法使用abstract,没有方法体。抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写

// 抽象类
abstract class Person {
    name:string;
    age:number;
    constructor(name:string, age:number) {
        this.name = name;
        this.age = age;
    }
    // 抽象方法,注意用 void 
    abstract say():void;
}
class Student extends Person {
    uid:string;
    constructor(name:string, age:number, uid:string) {
        super(name, age);
        this.uid = uid;
    }
    info() {
        console.log("学生:" + this.name);
    }
    // 子类必须重写父类中的抽象方法
    say() {
        // super.say();
        console.log("this is Child_Class");

    }
}
const stu = new Student('glm', 14, "2345");
stu.say();

接口

接口用来定义一个类结构。接口可以在定义类类的时候去限制类的结构。

  • 接口中的所有属性都不能有实际的值
  • 接口只定义对象的结构,而不考虑实际值
  • 在接口中的所有方法都是抽象方法
interface myInter {
    name:string;
    say():void;
}
/**
 * 定义类时,可以使类去实现一个接口
 *      实现接口就是使类满足接口的要求
 */
class MyClass implements myInter {
    name:string;
    constructor(name:string) {
        this.name = name;
    }
    say() {
        console.log("hello");
    }
}

属性封装

TS可以在属性前添加属性修饰符。

  • public:修饰的属性可以在任意位置访问(修改)默认值
  • private:只能在类内部进行访问(修改)
    • 通过在类中添加方法使得私有属性可以被外部访问
  • protected:受保护的属性,只能在当前类和当前类的子类中被访问(修改)

TS封装有两种,一种是编程语言中常见的getter/setter;另一种是TS特有的。

getter/setter

  • getter:读取属性
  • setter:设置属性
class Student {
    private _name:string;
    private _age:number;
    constructor(name:string, age:number) {
        this._name = name;
        this._age = age;
    }

    getName() {
        return this._name;
    }
    setName(name:string) {
        this._name = name;
    }
    getAge() {
        return this._age;
    }
    setAge(age:number) {
        this._age = age;
    }
}
const a = new Student('golemon', 321);
console.log(a.getName(), a.getAge())
a.setName('haper');
console.log(a.getName());

在这里插入图片描述

TS特有的封装方式

设置getter方法的方式:

get attri_name() {
	// ...
}

设置setter方法的方式:

set attri_name(val) {
	// ...
}

访问是直接通过attri_name访问,无需括号()

class Student {
    private _name:string;
    private _age:number;
    constructor(name:string, age:number) {
        this._name = name;
        this._age = age;
    }

    get name() {
        return this._name;
    }
    set name(name:string) {
        this._name = name;
    }
    get age() {
        return this._age;
    }
    set age(age:number) {
        this._age = age;
    }
}
const a = new Student('golemon', 321);
console.log(a.name, a.age)
a.name = 'yh'
console.log(a.name);

在这里插入图片描述

同时,可以不用在类中声明变量,可直接在构造函数中声明。

class Class {
	constructor(public name:string, public age:number) {
		// ....
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一些硬件知识(二十七)

单片机一般使用NOR FLASH ,这是因为NOR FLASH支持字节级的随机读取,可以直接运行存贮其中的程序,NOR FLASH支持读取和执行存储其中的指令,而无需将程序拷贝到RAM中才可执行。NAND FLASH适用于大容量的数据存储,他的读写…

【Canvas与标志】灰座橙底红芯辐射标志

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>灰座橙底红芯辐射标志</title><style type"text/css&q…

msvcp140.dll丢失的解决方法,详细解读6种解决方法

在使用电脑时&#xff0c;我们可能会遇到提示缺少msvcp140.dll的错误信息。这个提示意味着我们的电脑中缺少MSVCP140.dll这个文件&#xff0c;它是某些程序运行所必需的。如果我们遇到这个问题&#xff0c;应该如何解决呢&#xff1f;本文将详细解析如何解决msvcp140.dll丢失的…

qemu模拟arm64环境-构建6.1内核以及debian12

一、背景 手头没有合适的arm64开发板&#xff0c;但是需要arm的环境&#xff0c;于是想到qemu模拟一个。除了硬件交互以外&#xff0c;软件层面的开发还是都可以实现的。 虚拟机还能自定义内存大小和镜像大小&#xff0c;非常适合上板前的验证&#xff0c;合适的话再买也不迟。…

深度学习:5种经典神经网络模型介绍

目录 1. LeNet&#xff1a;CNN的鼻祖 2. AlexNet&#xff1a;深度学习的开山之作 3. VGGNet&#xff1a;深度与简洁的结合 4. GoogLeNet&#xff1a;Inception模块的创新 5. ResNet&#xff1a;残差学习的革命 卷积神经网络&#xff08;CNN&#xff09;已经发展为图像识别…

张雪峰谈人工智能技术应用专业的就业前景!

一、张雪峰谈人工智能技术应用专业 在教育咨询领域&#xff0c;张雪峰老师以其深入浅出的讲解和前瞻性的视角&#xff0c;为广大学子提供了宝贵的专业选择建议。对于人工智能技术应用专业&#xff0c;张雪峰老师通常给予高度评价&#xff0c;认为这是一个充满无限可能且就业前…

DELL SC compellent存储的四种访问方式

DELL SC存储&#xff08;国内翻译为 康贝存储&#xff0c;英文是compellent&#xff09;, compellent存储是dell在大概10多年前收购的一家存储&#xff0c;原来这个公司就叫做compellent。 本文的阅读对象是第一次接触SC存储的技术朋友们&#xff0c;如何访问和管理SC存储。总…

陀螺仪LSM6DSV16X与AI集成(13)----中断获取SFLP四元数

陀螺仪LSM6DSV16X与AI集成.13--中断获取SFLP四元数 概述视频教学样品申请源码下载硬件准备SFLP开启INT中断中断读取传感器数据主程序演示 概述 本文将介绍如何通过中断机制获取 LSM6DSV16X 传感器的 SFLP&#xff08;Sensor Fusion Low Power&#xff09;四元数数据。LSM6DSV1…

深入剖析 Golang 的错误处理机制:让你的代码更加健壮与优雅

在 Go 语言中&#xff0c;错误处理是程序健壮性的重要组成部分。不同于许多其他编程语言使用的 try-catch 异常处理机制&#xff0c;Go 采用了一种更加简洁的方式&#xff0c;通过函数返回值处理错误。这种设计使得错误处理逻辑更加显式&#xff0c;代码也更容易理解和维护。 文…

Python 工具库每日推荐 【markdown2】

文章目录 引言Python文本处理库的重要性今日推荐:markdown2工具库主要功能:使用场景:安装与配置快速上手示例代码转换为HTML代码解释实际应用案例案例:博客文章处理案例分析高级特性自定义扩展安全模式命令行使用性能优化技巧扩展阅读与资源优缺点分析优点:缺点:总结【 已…

Byzantine setting 拜占庭环境

优秀教程 拜占庭将军问题(The Byzantine Generals Problem): 拜占庭将军问题(The Byzantine Generals Problem) Byzantine setting 在联邦学习和分布式计算中&#xff0c;“Byzantine setting”&#xff08;拜占庭环境&#xff09;是指一个分布式系统中的部分参与者可能表现出…

SE-Net模型实现猴痘病识别

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

国庆出行怎么能少了这款美食

&#x1f388;国庆出游&#xff0c;怎能少了白吉饼&#xff01;&#x1f389;宝子们&#xff0c;国庆假期大家都在哪里玩耍呀&#xff1f;今天我必须给大家强烈安利国庆旅游必带美食 ——食家巷白吉饼。&#x1f60b;白吉饼看似普通&#xff0c;却有着独特的魅力。它的外表金黄…

pip install dlib 失败报错的解决方案

pip install dlib 失败报错&#xff1a; 解决方案&#xff1a; 我是按照下面三条指令按照就能解决问题 pip install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple pip install boost -i https://pypi.tuna.tsinghua.edu.cn/simple pip install dlib -i https://p…

Stm32新建工程

库函数的开发方式。能够了解底层逻辑。 HAL库的开方式。快速上手&#xff0c;理解浅。 库函数的文件目录 Libraries里面就是库函数的文件 project官方实例的工程和模板&#xff0c;可以参考库函数 Utilities&#xff0c;官方在用电路测评STM32时使用的程序。 蓝色为库函数的发…

机器学习课程学习周报十五

机器学习课程学习周报十五 文章目录 机器学习课程学习周报十五摘要Abstract一、机器学习部分1. 统计推断与贝叶斯推断2. GMM和EM算法补充3. 马尔可夫链蒙特卡罗法3.1 蒙特卡罗法3.2 马尔可夫链3.3 Diffusion模型中的马尔可夫链 总结 摘要 本周的学习涵盖了统计推断和贝叶斯推断…

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo 对应标注&#xff0c;格式VOC (XML)&#xff0c;选配Y0L0(TXT) label| pic_ num| box_ _num hole: (425&#xff0c; 481) suspension_ wire: (1739&#xff0c; 1782) topbasi: (46&#xff0c; 46) dirty: (613&…

近期最佳港片,探讨家庭与希望,结尾让人心碎

在当下的电影环境中&#xff0c;香港电影正在经历一场颇具深意的转变&#xff0c;逐渐将目光投向普通人的生活。这种变化在《但愿人长久》中体现得淋漓尽致&#xff0c;影片通过一个家庭的悲欢离合&#xff0c;让人深刻感受到人性的复杂。吴慷仁在片中扮演的角色&#xff0c;无…

github项目——系统设计入门

今天的github趋势&#xff0c;有几个项目印象感觉很有意思&#xff0c;之后可能会用的上&#xff0c;记录一下 系统设计入门 书籍教程类项目&#xff0c;有中文文档&#xff0c;刚好需要。 https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md…

从零开始讲PCIe(9)——PCIe总线体系结构

一、分层结构 PCIe定义了一个分层架构&#xff0c;如图2-12所示。这些层逻辑上分为两个部分&#xff0c;分别独立运行&#xff1a;一个用于发送侧&#xff0c;另一个用于接收侧。分层方法对硬件设计者是很有好的&#xff0c;因为如果逻辑划分得当&#xff0c;在迁移到新版本的P…