ts学习05-typeScript中的类

类的定义

class Person {name: string; //属性  前面省略了public关键词constructor(n: string) {//构造函数   实例化类的时候触发的方法this.name = n;}run(): void {console.log(this.name);}
}
var p = new Person("张三");p.run();

在这里插入图片描述

class Person {name: string;//构造函数   实例化类的时候触发的方法constructor(name: string) {this.name = name;}getName(): string {return this.name;}setName(name: string): void {this.name = name;}
}
var p = new Person("张三");
console.log(p.getName());
p.setName("李四");
console.log(p.getName());

在这里插入图片描述

继承

class Person {name: string;constructor(name: string) {this.name = name;}run(): string {return `${this.name}在运动`;}
}
var p=new Person('王五');
console.log(p.run())class Web extends Person {constructor(name: string) {super(name); /*初始化父类的构造函数*/}
}var w = new Web("李四");
console.log(w.run());

在这里插入图片描述

ts中继承的探讨 父类的方法和子类的方法一致

class Person {name: string;constructor(name: string) {this.name = name;}run(): string {return `${this.name}在运动`;}
}
// var p=new Person('王五');
// alert(p.run())class Web extends Person {constructor(name: string) {super(name); /*初始化父类的构造函数*/}run(): string {return `${this.name}在运动-子类`;}work() {alert(`${this.name}在工作`);}
}var w = new Web("李四");
// alert(w.run());
// w.work();
console.log(w.run());

在这里插入图片描述

类里面的修饰符

  • public :公有 在当前类里面、 子类 、类外面都可以访问
  • protected:保护类型 在当前类里面、子类里面可以访问 ,在类外部没法访问
  • private :私有 在当前类里面可以访问,子类、类外部都没法访问
> 属性如果不加修饰符 默认就是 公有 (public)

public

在类里面、 子类 、类外面都可以访问

class Person {public name: string; /*公有属性*/constructor(name: string) {this.name = name;}run(): string {//内部访问return `${this.name}在运动`;}
}
class Student extends Person{constructor(name:string){super(name)}
}
var p = new Person("哈哈哈");
// 内部访问
console.log(p.run());
// 类外部访问公有属性;
console.log(p.name);
var s = new Student('里斯')
// 子类内部访问
console.log(s.run());
// 子类外部访问公有属性;
console.log(s.name);

在这里插入图片描述

protected

在类里面、子类里面可以访问 ,在类外部没法访问

class Person {protected name: string; /*公有属性*/constructor(name: string) {this.name = name;}run(): string {//内部访问return `${this.name}在运动`;}
}
class Student extends Person {constructor(name: string) {super(name);}run(): string {//内部访问return `${this.name}在运动`;}
}
var p = new Person("哈哈哈");
// 内部访问
console.log(p.run());
// 类外部访问公有属性;
console.log(p.name);
var s = new Student("里斯");
// 子类内部访问
console.log(s.run());
// 子类外部访问公有属性;
console.log(s.name);

在这里插入图片描述

private

在类里面可以访问,子类、类外部都没法访问

class Person {private name: string; /*公有属性*/constructor(name: string) {this.name = name;}run(): string {//内部访问return `${this.name}在运动`;}
}
class Student extends Person {constructor(name: string) {super(name);}run(): string {//内部访问return `${this.name}在运动`;}
}
var p = new Person("哈哈哈");
// 内部访问
console.log(p.run());
// 类外部访问公有属性;
console.log(p.name);
var s = new Student("里斯");
// 子类内部访问
console.log(s.run());
// 子类外部访问公有属性;
console.log(s.name);

在这里插入图片描述

静态属性 静态方法

class Per {public name: string;public age: number = 20;//静态属性static sex = "男";constructor(name: string) {this.name = name;}run() {/*实例方法*/alert(`${this.name}在运动`);}work() {alert(`${this.name}在工作`);}static print() {/*静态方法  里面没法直接调用类里面的属性*/console.log("print方法" + Per.sex);}
}// var p=new Per('张三');// p.run();Per.print();console.log(Per.sex);

在这里插入图片描述

多态

class Animal {name: string;constructor(name: string) {this.name = name;}eat() {//具体吃什么  不知道   ,  具体吃什么?继承它的子类去实现 ,每一个子类的表现不一样console.log("吃的方法");}
}class Dog extends Animal {constructor(name: string) {super(name);}//覆盖父类方法eat() {return this.name + "吃粮食";}
}class Cat extends Animal {constructor(name: string) {super(name);}//覆盖父类方法eat() {return this.name + "吃老鼠";}
}let dog = new Dog("小汪");
console.log(dog.eat());let cat = new Cat("小嗨");
console.log(cat.eat());

在这里插入图片描述

抽象类

typescript中的抽象类:它是提供其他类继承的基类,不能直接被实例化。用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。abstract抽象方法只能放在抽象类里面,抽象类和抽象方法用来定义标准 。 标准:Animal 这个类要求它的子类必须包含eat方法。

abstract class Animal {public name: string;constructor(name: string) {this.name = name;}abstract eat(): any; //抽象方法不包含具体实现并且必须在派生类中实现。run() {console.log("其他方法可以不实现");}
}
// var a=new Animal() /*错误的写法*/
class Dog extends Animal {//抽象类的子类必须实现抽象类里面的抽象方法constructor(name: any) {super(name);}eat() {console.log(this.name + "吃粮食");}
}var d = new Dog("小花花");
d.eat();class Cat extends Animal {//抽象类的子类必须实现抽象类里面的抽象方法constructor(name: any) {super(name);}run() {}eat() {console.log(this.name + "吃老鼠");}
}var c = new Cat("小花猫");
c.eat();

在这里插入图片描述

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

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

相关文章

【linux】日志有哪些

Linux系统日志主要有以下几种类型: 内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中设置决定内核消息及各种系统程序消息记录到什么位置。/var/log/message:该日志文件存放了内核消息…

webGL开发学科演示项目方案

开发学科演示项目需要考虑到教育目标、互动性和用户体验。以下是一个可能的技术方案,可用于实现这样的项目,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.WebGL 框架: 选择…

Kafka 保证消息消费全局顺序性

当有消息被生产出来的时候,如果没有指定分区或者指定 key ,那么消费会按照【轮询】的方式均匀地分配到所有可用分区中,但不一定按照分区顺序来分配 我们知道,在 Kafka 中消费者可以订阅一个或多个主题,并被分配一个或多…

旋转立方体.html(网上收集5)

<!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>旋转立方体</title><style>#cube {width: 200px;height: 200px;position: relative;transform-style: preserve-3d;animation: rotate 6s infinite linear;mar…

记一次SQL Server磁盘突然满了导致数据库锁死事件is full due to ‘LOG_BACKUP‘.

背景 最近我们的sql server 数据库磁盘在80左右&#xff0c;需要新增磁盘空间。还是处以目前可控的范围内&#xff0c;但是昨天晚上告警是80%&#xff0c;凌晨2:56分告警是90%&#xff0c;今天早上磁盘就满了。 经过 通过阿里云后台查看&#xff0c;磁盘已经占据99%&#xff0c…

react实现加载动画

1.Spinning.tsx import "./Spinning.scss";interface Props {isLoading: boolean;children?: React.ReactNode; }const Spinning: React.FC<Props> ({isLoading true,children }) > {return <div className{spinning-wrapper${isLoading ? " l…

Java线程池底层原理

文章目录 1. 线程和现场池的对比2. ThreadPoolExecutor分析3. ThreadPoolExecutor源码详解 1. 线程和现场池的对比 下面代码创建了100000个线程 public class Main {public static void main(String[] args) throws InterruptedException {Long start System.currentTimeMilli…

【爬虫逆向分析实战】某笔登录算法分析——本地替换分析法

前言 作者最近在做一个收集粉币的项目&#xff0c;可以用来干嘛这里就不展开了&#x1f601;&#xff0c;需要进行登录换算token从而达到监控收集的作用&#xff0c;手机抓包发现他是通过APP进行计算之后再请求接口的&#xff0c;通过官网分析可能要比APP逆向方便多&#xff0…

基于hadoop下的hbase安装

简介 HBase是一个分布式的、面向列的开源数据库&#xff0c;该技术来源于Fay Chang所撰写的Google论文“Bigtable&#xff1a;一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统&#xff08;File System&#xff09;所提供的分布式数据存储一样&#xff0c;…

【参数估计】---点估计之矩估计

点估计之矩估计 &#x1f47b;什么是参数估计&#x1f47b;引例---理解参数估计&#x1f41f;点估计&#x1f36d;引例&#x1f36d;点估计问题 &#x1f41f;矩估计&#x1f36d;预备知识&#x1f36d;矩估计的求解步骤&#x1f36d;矩估计例题 &#x1f47b;什么是参数估计 在…

产品待办列表中的内容是什么?详解

产品待办列表是敏捷开发中用来跟踪所有必须完成的工作的一个清单。这个清单涵盖了从新功能的添加&#xff0c;到缺陷的修复&#xff0c;再到对现有功能的改进等等。这个列表就像产品团队的任务中心&#xff0c;上面列出了所有需要完成的工作&#xff0c;而且只有列在这个清单上…

Python 批量修改文件名

主要步骤 通过os.listdir查看该文件夹下所有的文件&#xff08;包括文件夹&#xff09;遍历所有文件&#xff0c;如果是文件夹则跳过&#xff0c;或指定跳过指定文件获取文件扩展名按照需求生成新的文件路径文件名进行重命名 代码示例 # -*- coding: utf-8 -*- import osdef…