public理解

当你在程序中没有指明修饰符时,默认为public,也就是在类内类外都可以访问,我们以下面的例子来解释。

  1. class Person{
  2. name:string
  3. sex:string
  4. age:number // 默认设置为public
  5. constructor(name:string, sex:string, age:number){
  6. this.name = name
  7. this.sex = sex
  8. this.age = age
  9. }
  10. show_name():void{
  11. console.log('类内函数输出的:', this.name)
  12. }
  13. }
  14. let lcs = new Person('lcs', 'man', 21)
  15. console.log('类外输出的:', lcs.name)
  16. lcs.show_name()

private理解

在类内定义这个变量时,我们可以定义为private,他就不可以在类外进行访问,例子如下:

  1. class Person{
  2. private name:string // 这里将name改为了private
  3. sex:string
  4. age:number
  5. constructor(name:string, sex:string, age:number){
  6. this.name = name
  7. this.sex = sex
  8. this.age = age
  9. }
  10. show_name():void{
  11. console.log('类内函数输出的:', this.name)
  12. }
  13. }
  14. class Teacher extends Person{
  15. salary: number
  16. constructor(name:string, sex:string, age:number,salary:number){
  17. super(name,sex,age)
  18. this.salary = salary
  19. }
  20. show():void{
  21. console.log('继承类内输出的:', this.name, this.salary.toString())
  22. }
  23. }
  24. let lcs = new Person('lcs', 'man', 21)
  25. let t = new Teacher('lcs', 'man',21,31232)
  26. t.show()
  27. console.log('类外输出的:', lcs.name)
  28. lcs.show_name()

在编译的时候编译器报错

编译器指出,name变量时private,只能在类Person内使用,在继承类类外都是可以访问的,但是这个时候在浏览器内还是可以正常运行的,报错的目的是为了让你规范代码

protected理解

定义为protected之后的变量只能在类内和继承类内进行访问,在类外访问就会报错

  1. class Person{
  2. protected name:string // 将name改为protected
  3. sex:string
  4. age:number
  5. constructor(name:string, sex:string, age:number){
  6. this.name = name
  7. this.sex = sex
  8. this.age = age
  9. }
  10. show_name():void{
  11. console.log('类内函数输出的:', this.name)
  12. }
  13. }
  14. class Teacher extends Person{
  15. salary: number
  16. constructor(name:string, sex:string, age:number,salary:number){
  17. super(name,sex,age)
  18. this.salary = salary
  19. }
  20. show():void{
  21. console.log('继承类内输出的:', this.name, this.salary.toString())
  22. }
  23. }
  24. let lcs = new Person('lcs', 'man', 21)
  25. let t = new Teacher('lcs', 'man',21,31232)
  26. t.show()
  27. console.log('类外输出的:', lcs.name)
  28. lcs.show_name()

编译器报错如下

同样,在浏览器还是可以正常运行的

typescript 公共,私有与受保护的修饰符的更多相关文章

  1. 了解protected 以及公用、私有和受保护的继承

    protected成员 可以认为protected访问标号是private 和public 的混合: 1.像private成员一样,protected成员不能被类的用户访问. 2.像public成员一 ...

  2. Python - 面向对象(三)公共变量,受保护变量,私有变量

    前言 在Python的类里面,所有属性和方法默认都是公共的:但Python也可以设置受保护.私有类型的变量or方法 受保护类型的变量.方法 一般称为:protected变量 #!/usr/bin/en ...

  3. Java自学-类和对象 访问修饰符

    Java的四种访问修饰符 成员变量有四种修饰符 private 私有的 package/friendly/default 不写 protected 受保护的 public 公共的 比如public 表 ...

  4. Java 基础 面向对象修饰符和自定义数据类型

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符如下: public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是 ...

  5. 不同修饰符使用细节(java)

    常用来修饰类.方法.变量的修饰符如下 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权限修饰符,默认访 ...

  6. 2018/03/10 每日一学PHP 之 修饰符 public/private/protected

    对于面向对象 修饰符的使用是我们最常用,也是很容易忽略的小细节. 对于编程来说,把握好每一个小细节,就能构造出漂亮,优雅的程序. public 使用最多的修饰符,公共方法,允许所有访问,就像一个公交车 ...

  7. 14_java之变量|参数|返回值|修饰符

    01java中的文档注释和制作 * A: 在eclipse使用时,可以配合文档注释,导出对类的说明文档,从而供其 他人阅读学习与使用. 通过使用文档注释,将类或者方法进行注释用@简单标注基本信息.如@ ...

  8. Java面向对象(static、final、匿名对象、内部类、包、修饰符、代码块)

    面向对象 今日内容介绍 u final u static u 匿名对象 u 内部类 u 包的声明与访问 u 四种访问修饰符 u 代码块 第1章 final关键字 1.1 final的概念 继承的出现提 ...

  9. JAVA中类以及成员变量和成员方法的修饰符的总结

    一  类的修饰符 java中的文件结构由大到小为:一个工程,一个工程下可以有许多包,每个包中可以有许多类. 类的修饰符分为         访问权限修饰符          和             ...

随机推荐

  1. oracle11g安装时出现程序未找到文件解决办法

    在安装的最后可能会出现如下问题 解决办法如下 将win64_11gR2_database_2of2中的\win64_11gR2_database_2of2\database\stage\Compone ...

  2. 搭建基于.NetFrameWork的私有nuget服务端及打包项目发布上传

    一.私有Nuget服务端搭建 1.创建一个.NetFramework web项目 2.在nuget管理中 安装 nuget.server包 3.安装完成后修改web.config里面的 apikey ...

  3. 《HelloGitHub》第 39 期

    兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...

  4. js api 之 fetch、querySelector、form、atob及btoa

    js api 之 fetch.querySelector.form.atob及btoa 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/11095862.htm ...

  5. 论文研读Unet++

    Unet++: A Nested U-Net Architecture for Medical Image Segmentation Unet++ 论文地址 这里仅进行简要介绍,可供读者熟悉其结构与特 ...

  6. Neo4j 爬坑笔记for3.2.6

    官网语法,非常详尽:http://neo4j.com/docs/developer-manual/current/cypher/clauses/match/ A:请对应版本号,不同大版本可能会有很大区 ...

  7. iOS开发如何避免安全隐患

    现在很多iOS的APP没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们来聊聊iOS开发人员平时怎么做才更安全. 一.网络方面 用抓包工具可以抓取手机通信接口的数据.以Charles为例, ...

  8. 项目中遇到的Redis缓存问题

    1.Redis服务器 can not get resource from pool. 1000个线程并发还能跑,5000个线程的时候出现这种问题,查后台debug日志,发现redis 线程池不够.刚开 ...

  9. leadcode的Hot100系列--78. 子集--回溯

    上一篇说了使用位运算来进行子集输出,这里使用回溯的方法来进行排序. 回溯的思想,我的理解就是: 把解的所有情况转换为树或者图,然后用深度优先的原则来对所有的情况进行遍历解析. 当然,因为问题中会包涵这 ...

  10. Ural 2064:Caterpillars(思维暴力)

    http://acm.timus.ru/problem.aspx?space=1&num=2064 题意:有n只虫子在爬树,每个虫子往上爬ti距离后会往下掉落ti距离,每爬一个单位距离耗费一个 ...