一、interface接口--自定义一个约束结构

1.1 使用

注意:1.首字母I要大写   2.结束是;结尾

interface Idata{a:number;b:string;
}let obj1:Idata={a:1,b:'你好'
}

1.2 复杂的写法

interface Ilist{list:{id:number;name:string;}[]
}interface Idata{message:string;success:boolean;data:Ilist
}let data:Idata =  {message:'成功',success:true,data:{list:[{id:1,name:'张三'},{id:2,name:'李四'}]}
}

二、interface继承

//继承后为累加
interface Idata{message:string;success:boolean;data?:{}
}interface Ires extends Idata{children?:[];
}

三、类

class Person{userName:string;userAge:number;constructor( name:string, age:number ){this.userName = name;this.userAge = age;}run( a:number, b:number ):number {return a+b;}}new Person( '张三' , 18 ).run(1,2);

四、修饰符

readonly    只读

public      公开的,在任何地方都可以访问

protected   受保护的,只能在当前类和当前类的子类内部使用

private     私有的,当前类的内部使用

//readonly   只读
interface Iobj{readonly a:number,b:number,
}
let obj:Iobj={a:1,b:2,
}
//没用readonly时,可以这样更改a的值;用了readonly后,会报错,因为此时a为只读,不可修改
obj.a=555//public          公开的,在任何地方都可以访问
//protected     受保护的,只能在当前类和当前类的子类内部使用//demo1
class Person{protected userName:string;public userAge:number;constructor( name:string, age:number ){this.userName = name;this.userAge = age;}run( ):string {return this.userName}}
let p1=new Person('张三',123)
//此时访问userName会报错,因为是protected
console.log(p1.userName);
//此时运行ok,因为run是类内部的
p1.run()//demo2
class Person{protected username:string
}
class Child extends Person{run(){return this.username}
}
let c=new Child
//访问会报错
console.log(c.username);
//通过内部的函数访问父类受保护的属性是OK的
c.run()//private        私有的,当前类的内部使用class Person{private username:string
}
class Child extends Person{run(){return this.username}
}
let c=new Child
//通过内部的函数访问父类私有的属性也会报错
c.run()

五、抽象类abstract

5.1 不完成具体的功能

5.2 抽象类不能new

5.3 抽象类可以继承,如果要继承,就必须实现该类的抽象方法

//1.不完成具体的功能//以下例子demo1会报错,抽象类不实现run功能
abstract class Person{abstract run(){return 1111;}
}//2.抽象类不能new
//demo2为抽象类new会报错
abstract class Person{abstract run():voidabstract change():void}
let c=new Person//3. 抽象类可以继承,如果要继承,就必须实现该类的抽象方法//demo3实现抽象类的继承
abstract class Person{abstract run():voidabstract change():void}
class child extends Person{run():void{}change():void{}
}

六、implements对于类的约束

//单个约束
interface Ip1{name:string;age:number;
}
class Person implements Ip1{name:string;age:number;
}//多个约束
interface Ip1{name:string;age:number;
}
interface Ip2{change():void
}
class Person implements Ip1,Ip2{name:string;age:number;change(){};
}
//如果没有change,则会报错
class Person implements Ip1,Ip2{name:string;age:number;
}

第二天:TypeScript的InterFace接口、类、修饰符、抽象类、implements相关推荐

  1. C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态

    C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal 接口的成员默认访问修饰符是public C#修饰符-- ...

  2. C#的类修饰符和成员修饰符

    一.类修饰符 类修饰符:public.internal. partial.abstract.sealed.static.new.protected.private.protected internal ...

  3. 有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,各有一个main函数,谁在前先执行谁!

    发现一有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,个有一个main函数,谁在前先执行谁! //Detergent.java //Class:Detergent,Clean ...

  4. java中类的修饰符_Java中的类修饰符

    之前每次写小测试程序的时候,总是把一个类放在一个Java文件中,按理说这样比较规范,可主要原因是我是在不知道怎么在一个文件里放多个类,可见java基础有多差了...只要把类的属性改成默认的就可以了,也 ...

  5. Java接口的修饰符

    Java接口的修饰符可以为(D) A.private B. protected C.final D.abstract 接口: (1)接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须 ...

  6. java中的类修饰符、成员变量修饰符、方法修饰符。

    类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...

  7. java 类修饰符、成员变量修饰符、方法修饰符总结

    类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...

  8. java接口的修饰符可以为,附架构师必备技术详解

    第一章 MySQL入门与初步 1.1 MYSQL 简介 1.2 关系数据库管理系统 1.3 MYSQL 使用的 SQL 语言 1.4 MYSQL 数据处理 第二章 MySQL的安装 2.1 MYSQL ...

  9. 基本语法及基本概念概述(标识符、访问修饰符、变量、数组、枚举、注释、空行、继承、接口、(对象、类、方法、实例变量)、关键字表)

    文章目录 1.标识符 2.标识符命名规范 3.访问修饰符 4.变量 5.数组 6. 枚举 7.注释 8.空行 9.继承 10.接口 11.对象.类.方法.实例 12.关键字表 13.保留字(reser ...

  10. 最全Java各修饰符详解(接口、类、方法、变量)

    一.总述 类.方法.成员变量和局部变量的可用修饰符 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - - - static (静态的) - √ - √ - p ...

最新文章

  1. typescript语法高亮插件_JavaScript开发者必备的10个Sublime Text插件
  2. 过直线上一点画垂线图_苏教版四年级数学上册8.5认识垂直、点到直线的距离微课视频 | 练习...
  3. 实验二《Java面向对象程序设计》实验报告
  4. CI/CD(持续集成构建/持续交付):如何测试/集成/交付项目代码?(Jenkins,TravisCI)
  5. JZOJ 1286. 太空电梯
  6. .com才是顶级域名,baidu.com是二级域名
  7. 【数据融合】基于matlab拓展卡尔曼滤波IMU和GPS数据融合【含Matlab源码 1600期】
  8. 商城APP开发关键板块
  9. 圣诞礼物|2020年送这些礼物你就能拥有一个程序员男朋友
  10. 一元享移动怎么样_移动推出头条爽卡:9元每月享免流特权,流量1元800M每天
  11. axure如何竖立文字_Axure pr 如何让文字显示为竖着的?
  12. 自动分发秘钥脚本(复制修改ip即可使用)
  13. 宏记录器 Macro Recorder 2.0 注册版
  14. 恒驰冬测 恒大汽车迎性能大考
  15. 钉钉全栈化实践总结-前端篇
  16. IROS 2017观察:机器人研究产业化加速,中国企业如何借力升级?
  17. 【企业架构设计实战】大数据架构最佳实践
  18. Kafka 消息传递语义 Exactly Once(精准一次) 相关知识
  19. matlab绘制步进频率信号,雷达信号处理MATALB模拟---频率步进信号SFWC
  20. 深度包检测库nDPI

热门文章

  1. java怎么实现复杂的考勤计算_考勤系统之计算工作小时数
  2. c8500刷机 转帖
  3. 算法打卡Ques20201009
  4. 【Error】Win10/Python3.9安装dlib报错:subprocess.CalledProcessError以及解决方法
  5. WPS:添加公式后,行间距变宽的解决方法
  6. 2015年河南省省赛部分题题解
  7. 金蝶k3服务器系统吗,金蝶k3能在云服务器上吗
  8. 六、CSS3的美化字体与段落
  9. springboot集成easypoi实现excel多sheet导出,并设置表头样式
  10. android 陀螺仪传感器性能损耗,传感器专题(3)——加速度/陀螺仪传感器