【TypeScript学习】—面向对象(四)

【TypeScript学习】—面向对象(四)

一、面向对象

在这里插入图片描述

二、类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、构造方法

class Dog{name:string;age:number;//构造函数constructor(name:string,age:number){this.name=name;this.age=age;}bark(){//在方法中可以通过this来表示当前调用方法的对象//this表示当前对象console.log(this.name);}
}const dog=new Dog('旺财',3);
const dog2=new Dog('小白',2);
console.log(dog);
console.log(dog2);
dog.bark();

四、继承

在这里插入图片描述

五、super关键字

在这里插入图片描述

(function(){class Animal{name:String;constructor(name:string){this.name=name}say(){console.log('动物在叫')}}class Dog extends Animal{//如果在子类写了构造函数,在子类的构造函数中必须对父类的构造函数进行声明
//age:number;constructor(name:string,age:number){super(name);this.age=age;}say(){//在类的方法中super就表示当前类的父类super.say();}}const dog=new Dog('旺财',3);dog.say();
})();

六、抽象类

在这里插入图片描述

(function(){// 以abstract开头的都是抽象类//抽象类和其他类的区别不大 只是不能用来创建对象// 抽象类就是专门用来被继承的类//抽象类中可以添加抽象方法abstract class Animal{name:String;constructor(name:string){this.name=name}//定义一个抽象方法//  抽象方法使用abstract开头,没有方法体//抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写abstract say():void;}class Dog extends Animal{say(){console.log('汪汪汪');}}const dog=new Dog('旺财');dog.say();
})();

七、接口

在这里插入图片描述
在这里插入图片描述

(function(){//描述一个类型的对象type myType={name:String,age:number};//接口用来定义个类结构,用来定义一个类中应该包含哪些属性和方法//同时接口也可以当成类型声明去使用interface myInterface{name:string;age:number;}//   interface myInterface{
//     gender:string;
//   }
//    const obj:myInterface={
//     name:'sss',
//     age:111,
//     gender:'男'
//    };
})();

八、属性的封装

在这里插入图片描述

(function(){//定义一个表示人的类/*TS可以在属性前添加属性的修饰符public 修饰的属性可以在任意位置访问(修改)默认值private 私有属性 私有属性只能在类内部进行访问(修改),通过在类中添加方法使得私有属性可以被外部访问
protected 受保护的属性只能在当前类和当前类的子类进行访问*/class Person{private  name:string;private   age:number;constructor(name:string,age:number){this.name=name;this.age=age;}/*getter方法用来读取属性setter方法用来设置属性*///定义方法  用来获取name属性getName(){return this.name;}//定义方法  用来设置name属性setName(value:string){this.name=value}}/*现在属性是在对象中设置的,属性可以任意的被修改属性可以任意被修改将会导致对象中的数据变得非常不安全*/const p=new Person('cai',18);p.setName('lily');
console.log(p.getName())
})();

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用命令行创建仓库

如果你还没有任何代码,可以通过命令行工具创建一个全新的Git仓库并初始化到本项目仓库中。 git clone https://e.coding.net/***/neurosens.git cd neurosens echo "# neurosens" >> README.md git add README.md git commit -m "first commi…

简单的爬虫代码 爬(豆瓣电影)

路漫漫其修远兮,吾将上下而求索 这次写一个最简单的python爬虫代码,也是大多教程第一次爬取的,代码里面有个别的简单介绍,希望能加深您对python爬虫的理解。 本次爬取两个网页数据 一 爬取的网站 豆瓣电影 爬取网页中的&#…

windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)

文章目录 通过端口号查看进程号netstat通过进程号定位应用程序tasklist 通过端口号查看进程号netstat 在Windows系统中,可以使用 netstat 命令来查看端口的占用情况。以下是具体的步骤: 打开命令提示符(CMD):按WinR组…

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

0.引言 上一篇博客介绍了使用Yalmip工具箱求解单阶段鲁棒优化的方法。这篇文章将和大家一起继续研究如何使用Yalmip工具箱求解两阶段鲁棒优化(默认看到这篇博客时已经有一定的基础了,如果没有可以看看我专栏里的其他文章)。关于两阶段鲁棒优化与列与约束生成算法的原…

Mybatis 动态SQL – 使用choose标签动态生成条件语句

之前我们介绍了if,where标签的使用;本篇我们需要在if,where标签的基础上介绍如何使用Mybatis提供的choose标签动态生成条件语句。 如果您对if,where标签动态生成条件语句不太了解,建议您先进行了解后再阅读本篇,可以参考: Mybat…

uniapp从零到一的学习商城实战

涵盖的功能: 安装开发工具HBuilder:HBuilderX-高效极客技巧 创建项目步骤: 1.右键-项目: 2.选择vue2和默认模板: 3.完整的项目目录: 微信开发者工具调试: 1.安装微信开发者工具 2.打开…

MySQL访问和配置

目录 1.使用MySQL自带的客户端工具访问 2.使用DOS访问(命令行窗口WinR → cmd) 3.连接工具(SQLyog或其它) MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 1.使用MySQL自…

行测图形推理规律(一)元素组成

题库:粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的,但是总结的规律应该是一样的。 规律并不唯一,题库的答案也只是参考答案,切勿当杠精,你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…

23. 带旋转的数独游戏

题目 Description 数独是一个基于逻辑的组合数字放置拼图,在世界各地都很受欢迎。 在这个问题上,让我们关注 网格的拼图,其中包含 个区域。 目标是用十六进制数字填充整个网格,即 ,以便每列,每行和每个区…

electron win系统通知修改通知标题栏

标题栏的 electron.app.Electron 如何修改: var package require("../package.json"); app.setAppUserModelId(package.description); app.setAppUserModelId 在主进程的app这里修改

Vue组件之间进行传值的两种方式

在 Vue 中,组件之间传值是一个常见的操作,通常有两种方式来传递数据:props 和事件(Event Bus)。下面我将详细介绍这两种方式。 1. 通过 Props 传递数据 Props 是一种用于从父组件向子组件传递数据的方式。在子组件中…

低代码平台:IVX 重新定义编程

目录 🍬一、写在前面 🍬二、低代码平台是什么 🍬三、为什么程序员和技术管理者不太可能接受“低代码”平台? 🍭1、不安全(锁定特性) 🍭2、不信任 🍬四、IVX低代码平台 &a…