C#关键字:访问修饰符
一、访问修饰符
访问修饰符有public、private、protected、internal和protected internal。它们是修饰在类型(类、接口、委托、结构和枚举)和类型成员(字段、属性、方法、构造函数等等)上控制其访问权限的关键字。
访问修饰符虽然是修饰在类型和类型成员上的,但它却控制着C#程序物理结构层次(程序集/类型/类型成员)之间的访问权限。如果把程序集看作国家,那么类型就是国家的所有事物,而类型成员是所有事物的属性和行为。我们把我们国家的人(类型)的心理活动这个属性(类型成员)定义成private,那么除了自己以外的人就不能访问到你的心理活动;我们把我们国家的秘密武器(类型)定义成internal,那么其他国家就无法访问到我们国家的秘密武器。
/// <summary>
/// 洗衣机的类定义成internal,其他程序集不能访问这个洗衣机的类
/// </summary>
internal class WashingMachine
{
/// <summary>
/// 洗衣时长定义成private,其他类就不能使用洗衣时长这个字段,但洗衣机这个类里的其他成员可以使用
/// </summary>
private int duration;
}
访问修饰符表(来源精通C#第六版)

注:从表中可以看出类型只能使用public和internal修饰(嵌套类型除外)。
注1:嵌套类型是指类型作为其他类型的类型成员。
注2:当不使用访问修饰符修饰类型或者类型成员时,编译器会赋予他们默认的访问修饰符,类型为internal,类型成员为private。
注3:接口类型与枚举类型的成员,不能使用访问修饰符,因为它们始终是公共的。
注4:结构类型不能使用protected,因为结构类型是值类型,不能被继承。
public class House
{
//类WashingMachine这里是House类的类型成员,也叫嵌套类型
private WashingMachine washingMachine;
}
C#关键字:访问修饰符的更多相关文章
- this关键字、访问修饰符、super关键字
this关键字.访问修饰符.super关键字 Java关键字this只能用于方法方法体内,而且只能用在非静态方法内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个 ...
- Java_关键字、匿名对象、内部类、访问修饰符、代码块
final关键字 概述: 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后, ...
- 什么是封装? ----------------php中"public"类似的访问修饰符分别有什么作用?----什么是抽象?抽象的关键字以及用法----- 什么是接口?接口的关键字以及用法-------------
什么是封装? ------------------------------------封装是php面向对象的其中一个特性,将多个可重复使用的函数封装到一个类里面.在使用时直接实例化该类的某一个方法,获 ...
- 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)
1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. ...
- Java中的一些关键字:static,final,和abstract,interface,以及访问修饰符说明
1.关键字可以修饰的说明: 关键字 属性(是否可修饰) 方法(是否可修饰) 类(是否可修饰) static 是 是 是 final 是 是 是 abstract 否 是 是 2.关键字的意义: 关键字 ...
- abstract关键字、final关键字、static关键字、访问修饰符详解
abstract关键字.final关键字.static关键字.访问修饰符详解 abstract关键字: final关键字: static关键字: 访问修饰符:
- Scala访问修饰符(四)
Scala 访问修饰符基本和Java的一样,分别有:private,protected,public. 如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public. Scala ...
- .NET 基础 一步步 一幕幕 [注释、命名规则、访问修饰符、数据类型、常量、变量]
注释.命名规则.访问修饰符.数据类型.常量.变量 话说一个不会写注释的程序猿的不是一个好吃货,我们本篇就从注释开始说起好了. 在C#中有三种注释: 第一种:单行注释 以//开头,后面的就是注释内容 ...
- 类的高级:访问修饰符、封装、静态类成员static、内部类;
访问修饰符: 公开访问(public):对所有子类,非子类访问: 受保护的(protected):只有同包子类.非子类.不同包子类可访问,不同包非子类不可访问: 私有的(private):只有本类可访 ...
随机推荐
- 【Gamma】 Scrum Meeting 1
github 本此会议项目由PM召开,召开时间为5月26日晚上10点 召开时长20分钟 任务表格 姓名 当前任务 下阶段任务 袁勤 后端插入判断题 后端插入简答题 彭一夫 填空题答题前端 判断题答题前 ...
- 【Docker】容器与系统时间同步
宿主机时间 [root@slave-1 ~]# date Fri May 12 11:20:30 CST 2017 容器时间 [root@slave-1 ~]# docker exec -ti 879 ...
- linux下如何使用docker二进制文件安装_docker离线安装
1,下载二进制文件 https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz 2,解压二进制文件 tar ...
- JS实现统一社会信用代码的效验(组织机构代码效验)
参考原文https://blog.csdn.net/hdhxby/article/details/56015370 部分错误,修改整合了下 想查询数据的,请点击:统一信用代码查询地址 查看效验规则点击 ...
- Egg.js运行环境配置场景
没有NODE_ENV和EGG_SERVER_ENV环境变量的场景 执行npm run dev,默认读取config.default.js. 执行npm run start,默认读取config.pro ...
- golang程序编译时提示“package runtime: unrecognized import path "runtime" (import path does not begin with hostname)”
在编译golang的工程时提示错误的, 提示的错误信息如下: package bytes: unrecognized import path "bytes" (import pat ...
- Sequelize模糊查询
const Sequelize = require('sequelize'); const Op = Sequelize.Op; User.findAll({ raw: true, order: [ ...
- mark_Linux_wc
Linux wc命令 Linux wc命令用于计算字数. 利用wc指令我们可以计算文件的Byte数.字数.或是列数,若不指定文件名称.或是所给予的文件名为"-",则wc指令会从标准 ...
- QWidget添加带有图片的QPushButton,布局QGridLayout
QWidget* w = new QWidget(this); w->setGeometry(10,20,400,300); QVBoxLayout* layout = new QVBoxLay ...
- 泡泡一分钟:Real-Time Vehicle Detection from Short-Range Aerial Image with Compressed MobileNet
张宁 Real-Time Vehicle Detection from Short-Range Aerial Image with Compressed MobileNet链接:https://pan ...