为什么用共有属性来封装私有变量
属性是对一个或者多个字段的封装.
类里面为什么要用一个共有的属性来封装其中的字段,也可以这样说用共有属性来封装私有变量,其中的好处应该大家都说的出来,就是为了实现数据的封装和保证了数据的安全,保护类里面的成员不被任意改动.例如下面的例子:
class myclass
{
private int age;//私有的字段
public int Age //属性
{
get
{
return this.age;
}
set
{
this.age=value;
}
}
}
仅仅从这里我想看不出到底把私有字段age封装在Age属性里面的好处在哪里?因为我们直接操作Age属性也可以达到对age字段的任意赋值和修改嘛.这段代码其实和下面这段代码没有区别.
class myclass
{
public int age;
}
就是把age字段变量直接共有.
但是如果涉及到对这个字段进行一些逻辑控制的时候,属性中能实现各种复杂的逻辑,而这些都不是直接把一个字段共有所能实现的.从这里就能体现出get和set访问器带来的好处了.下面具体讲讲.
1、属性可以只读或只写,比如下面代码,共有字段变量一定是可读写的。
2、属性可附带错误检查或额外的的代码,共有字段变量的读写不能。
3、虽然这些都是编译器给带来的好处,但封装有很多好处,像细节隐藏,实现隐藏等。比如说有一天人可以活到200岁,更改if(value > 200)不会影响其他调用Age的函数。
class myclass
{
private int age;//私有的字段
public int Age //属性
{
set
{
if(value < 0 || value > 200)
{
throw new Exception(""); // checking
}
if(this.age != value)
{
this.ageChanged = true; // extra routine
}
this.age=value;
}
}
}
总结:属性除了公布字段外,还可以在属性上添加对字段的约束规则,比如只读,只写,读写规则,还可以对属性的值进行逻辑验证等等.另外从软件设计的角度来看,属性是方法,应该被 公开,而字段是数据 ,应该被封装.
转载于:https://www.cnblogs.com/q149072205/archive/2011/08/03/2125973.html
为什么用共有属性来封装私有变量相关推荐
- 【JS笔记】私有变量
1.任何函数中定义的变量都可以认为是私有变量.函数内部可以访问,外部不能访问. 可以通过闭包创建特权方法访问私有变量. function Foo(){var n=10;this.returnN=fun ...
- c/c++教程 - 2.4.1 类和对象,封装,class和struct的区别,成员属性设为私有,类拆分成.h.c文件编写方法
目录 4. 类和对象 4.1 封装 4.1.1 封装的意义 4.1.2 class和struct的区别 4.1.3 成员属性设置为私有 4.1.4 类拆分成.h.c编写方法 相关教程 4. 类和对象 ...
- 【PYTHON】论Python的类中的私有变量、共有变量、全局变量、局部变量
0 引言 Python语言中,一切皆对象.对于Python语言中的变量,我想大家都不陌生,但是在Python中,变量也有很多种类.如私有变量.共有变量.全局变量.局部变量等.这里给大家介绍Python ...
- python核心编程:Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
这篇文章主要介绍了Python面向对象程序设计中类的定义.实例化.封装及私有变量/方法,结合具体实例形式较为详细的分析了Python面向对象程序设计中类的定义.实例化.封装.私有变量.私有方法等相关使 ...
- python私有变量和@property属性
私有变量 私有成员:命名使用双下划线开头. ·作用:无需向类外提供的成员,可以通过私有化进行屏蔽.·做法:命名使用双下划线开头. ·本质:障眼法,实际也可以访问. 私有成员的名称被修改为:_类名_成员 ...
- python中类的定义、实例化、封装以及私有变量/方法
1. 定义类 python中定义一个类的格式如下: class MyClass(object):def __init__(self,data1,data2):self.__data1=data1se ...
- python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...
python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...
- Python学习笔记:藉由私有属性实现封装
文章目录 一.私有属性的作用 二.Java类私有属性的设置与访问 1.创建资产实体类 - Asset 2.创建测试资产类 - TestAsset 三.Python类私有属性的设置与访问 1.创建程序 ...
- [java基础入门]java期末常考题。定义一个父类person,该类中有两个私有的属性姓名name和age,实现两个属性的封装 定义构造等等来初始化成员变量name和age,在定义显示show方法将
编程要求: 定义一个父类person,该类中有两个私有的属性姓名name和age, 实现两个属性的封装 定义构造等等来初始化成员变量name和age, 在定义显示show方法将姓名和年龄打印出来, 创 ...
- day016类的成员(变量、方法、属性)、私有
本节主要内容 1.类的成员 2.类的成员----变量(java叫属性) 3.类的成员----方法 4.类的成员----属性(等同于变量) 5.私有 一.类的成员 类里面写的内容,就是成员 二.类的成员 ...
最新文章
- 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个
- 掩耳盗铃之使用WebBrowser封装网页
- python模拟ATM + 购物商城
- C++类的信息隐藏机制
- linux怎么命令设置网络连接,Linux网络操作命令
- 1024程序猿节:揭秘腾讯老中青三代程序猿工位
- Java Web底层(1)
- 大一计算机论文_大学计算机论文
- 吐血整理!Python常用第三方库,码住!!!
- Linux操作系统基础命令
- 韩版三星s20 5g使用
- 阿里云的核心技术要点
- Android实现图片OCR功能
- 神经翻译笔记5扩展b. 常用的机器翻译技巧
- SuperMap之等高线制作
- 数字IC手撕代码-乐鑫科技笔试真题(4倍频)
- Cisco packet tracer 2811路由增加接口
- 微信小程序周报(第三期)
- 如何复制加密PDF文件的文档信息
- 中国芯片首富300亿办的大学“亮相”:占地2250亩,陈十一院士领衔筹建,已与西湖大学达成合作...
热门文章
- STM32 HAL SPI读取MPU6500的设备ID异常
- 【题解】Luogu P2157 [SDOI2009]学校食堂
- 如何避免 $_SERVER[PHP_SELF] 被利用?
- 士兵杀敌(三)_RMQ(区间最值查询)
- quartz定时任务中常用的cron表达式
- acdream 1735 输油管道 贪心
- Spring学习总结(2)——Spring IOC的前世今生
- Visual C++ 6.0 简体中文企业版
- Moss网站在不同服务器的迁移
- matlab学习笔记(4)