谈谈C#的私有成员的一个有趣的现象!
大家都知道,一个类的私有成员只能在他的内部访问!
但是不知道大家注意到没有,实际上在C#中一个类的实例是可以访问同一个类的另外一个实例的私有成员的。
请看这段简单的代码
public class MyClass
{
private int i = 0;
public void Function()
{
MyClass a = new MyClass();
Console.WriteLine( a.i); //这里成功访问了另外的一个实例a的私有实例字段
}
}
大家也可以自己写一段类似的代码来测试一下,的确是可以访问另外一个实例的私有成员!
为什么呢?因为C#就是一开始就是这样设计的。实际上这个设计在某种程度上破坏了对象的封装性,其他的面向对象的语言可能就没有做这样的设计了。
希望大家可以注意到这个问题,为了保证对象良好的封装性,最好不要这样访问啊!
转载于:https://www.cnblogs.com/xuefeng1982/archive/2009/02/18/1393166.html
谈谈C#的私有成员的一个有趣的现象!相关推荐
- firebug的一个有趣现象
firebug的一个有趣现象 var obj = {length:0,splice:function(){}}console.log(obj) 猜猜上面会打印出啥? 没错,打印出来的看起来是一个空数组 ...
- 发现魔方阵的一个有趣现象
昨天机器上装了一个MatLab 6.5,无意中发现一个有趣的现象: n阶魔方阵的行列式值等于零.条件是(n mode 2 = 0 and n > 2); 我做了验证如下: >> A= ...
- java 单元测试 私有成员变量,单元测试时测试一个private私有方法 - - ITeye博客
直接上例子 待测试的类 [code="java"]public class Calculator { private int count = 0; private int add( ...
- python设计一个date类数据成员有年月日_设计一个日期类Date,包括年、月、日等私有成员。要求实现日期的基本运算,例如某日期加上天数或减去天数...
/*设计一个日期类Date,包括年.月.日等私有成员.要求实现日期的基本运算,例如某日期加上天数或减去天数 ,两日期相减的天数等. 实现要求: 实现运算符加与减的重载 设计一个日期类Date,包括年. ...
- 4.19构建一个类book,含有两个私有成员qu和price
构建一个类book,含有两个私有成员qu和price,建立一个有5个元素的suzuki对象,将qu初始化为1~5,将price初始化为qu的10倍.显示每个对象的qu*price. 4.19 #inc ...
- 设计复数类 Complex继承于数字类 Number,私有成员变量包括 double类型的实部rea(父类 Number中已定义)和虚部imag,公有成员方法包括两个构造方法(一个不带参数的和一个带两
设计复数类 Complex继承于数字类 Number,私有成员变量包括 double类型的实部rea(父类 Number中已定义)和虚部imag,公有成员方法包括两个构造方法(一个不带参数的和一个 ...
- 设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径、area( )用于计算圆的面积; (2)定义一个桌子类table,内有私有数据h
1.(1)设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径.area( )用于计算圆的面积: (2)定义一个桌子类table,内有私有数据h ...
- java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
摘要:这篇JavaScript栏目下的"Javascript类定义语法,私有成员.受保护成员.静态成员等介绍",介绍的技术点是"javascript类.JavaScrip ...
- python 私有和保护成员变量如何实现?—— 单下划线 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量; 双下划线 开始的是私有成员,意思是只有类对象自己能访问...
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...
最新文章
- Oracle 物理结构(六) 文件-数据文件
- mysql php gpl_MySQL_MySQL数据库远程访问权限如何打开(两种方法),下载GPL版本安装MySQL Community - phpStudy...
- extjs中js资源缓存策略
- linux 封装python,基于linux下python学习(封装)
- Thread.sleep还是TimeUnit.SECONDS.sleep
- oracle em中查看jiob,HTML5 中的 b/strong、i/em 详解
- WPF: 使用CommandManager.InvalidateRequerySuggested手动更新Command状态
- 第八章:在Spark集群上掌握比较重要的图操作之Property Operators(2)
- SAS® Model Manager功能调研
- 华北计算机系统工程研究所录取名单,2018年华北计算机系统工程研究所接收推免研究生复试录取通知...
- 20200819:力扣202周周赛题解记录
- 深度学习中端到端的理解
- UNIX高级环境编程(11)进程控制(Process Control)- 进程快照,用户标识符,进程调度...
- PHP 根据URL将图片下载到本地(curl爬取)
- 怎么在Excel里输入可以打钩的选择框?
- ALSA驱动框架简介
- 学 Python 和学 Java ,哪个好找工作?
- synchronized(this)和synchronized(.class)的理解
- 韦东山第1期-学习笔记-4
- 一个新开端,存储服务器再添骨灰级玩家
热门文章
- DB2 9 底子(730 考试)认证指南,第 3 局部: 拜访 DB2 数据(3)
- 计算机应用基础课程基本要求,计算机应用基础课程标准
- 用JDBC直连方式访问SQL Server 2005详解
- 谈谈实习期间应该注意的几点问题,助你早日拿到转正offer
- css使按钮固定在界面上面
- 服务器物理内存总是九十几,服务器物理内存使用率90以上
- centos lnmp源码安装mysql_CentOS 6.6 下源码编译安装MySQL 5.7.5
- 推荐几十本投资书籍、互联网书籍及热门查看流量的工具
- PDF.js如何添加放大缩小的功能,转换成图片应该如何实现?
- python中改变参数值的方法_Python实现partial改变方法默认参数