属性是对一个或者多个字段的封装.
      类里面为什么要用一个共有的属性来封装其中的字段,也可以这样说用共有属性来封装私有变量,其中的好处应该大家都说的出来,就是为了实现数据的封装和保证了数据的安全,保护类里面的成员不被任意改动.例如下面的例子:
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

为什么用共有属性来封装私有变量相关推荐

  1. 【JS笔记】私有变量

    1.任何函数中定义的变量都可以认为是私有变量.函数内部可以访问,外部不能访问. 可以通过闭包创建特权方法访问私有变量. function Foo(){var n=10;this.returnN=fun ...

  2. 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. 类和对象 ...

  3. 【PYTHON】论Python的类中的私有变量、共有变量、全局变量、局部变量

    0 引言 Python语言中,一切皆对象.对于Python语言中的变量,我想大家都不陌生,但是在Python中,变量也有很多种类.如私有变量.共有变量.全局变量.局部变量等.这里给大家介绍Python ...

  4. python核心编程:Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解

    这篇文章主要介绍了Python面向对象程序设计中类的定义.实例化.封装及私有变量/方法,结合具体实例形式较为详细的分析了Python面向对象程序设计中类的定义.实例化.封装.私有变量.私有方法等相关使 ...

  5. python私有变量和@property属性

    私有变量 私有成员:命名使用双下划线开头. ·作用:无需向类外提供的成员,可以通过私有化进行屏蔽.·做法:命名使用双下划线开头. ·本质:障眼法,实际也可以访问. 私有成员的名称被修改为:_类名_成员 ...

  6. python中类的定义、实例化、封装以及私有变量/方法

    1.  定义类 python中定义一个类的格式如下: class MyClass(object):def __init__(self,data1,data2):self.__data1=data1se ...

  7. python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...

    python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...

  8. Python学习笔记:藉由私有属性实现封装

    文章目录 一.私有属性的作用 二.Java类私有属性的设置与访问 1.创建资产实体类 - Asset 2.创建测试资产类 - TestAsset 三.Python类私有属性的设置与访问 1.创建程序 ...

  9. [java基础入门]java期末常考题。定义一个父类person,该类中有两个私有的属性姓名name和age,实现两个属性的封装 定义构造等等来初始化成员变量name和age,在定义显示show方法将

    编程要求: 定义一个父类person,该类中有两个私有的属性姓名name和age, 实现两个属性的封装 定义构造等等来初始化成员变量name和age, 在定义显示show方法将姓名和年龄打印出来, 创 ...

  10. day016类的成员(变量、方法、属性)、私有

    本节主要内容 1.类的成员 2.类的成员----变量(java叫属性) 3.类的成员----方法 4.类的成员----属性(等同于变量) 5.私有 一.类的成员 类里面写的内容,就是成员 二.类的成员 ...

最新文章

  1. 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个
  2. 掩耳盗铃之使用WebBrowser封装网页
  3. python模拟ATM + 购物商城
  4. C++类的信息隐藏机制
  5. linux怎么命令设置网络连接,Linux网络操作命令
  6. 1024程序猿节:揭秘腾讯老中青三代程序猿工位
  7. Java Web底层(1)
  8. 大一计算机论文_大学计算机论文
  9. 吐血整理!Python常用第三方库,码住!!!
  10. Linux操作系统基础命令
  11. 韩版三星s20 5g使用
  12. 阿里云的核心技术要点
  13. Android实现图片OCR功能
  14. 神经翻译笔记5扩展b. 常用的机器翻译技巧
  15. SuperMap之等高线制作
  16. 数字IC手撕代码-乐鑫科技笔试真题(4倍频)
  17. Cisco packet tracer 2811路由增加接口
  18. 微信小程序周报(第三期)
  19. 如何复制加密PDF文件的文档信息
  20. 中国芯片首富300亿办的大学“亮相”:占地2250亩,陈十一院士领衔筹建,已与西湖大学达成合作...

热门文章

  1. STM32 HAL SPI读取MPU6500的设备ID异常
  2. 【题解】Luogu P2157 [SDOI2009]学校食堂
  3. 如何避免 $_SERVER[PHP_SELF] 被利用?
  4. 士兵杀敌(三)_RMQ(区间最值查询)
  5. quartz定时任务中常用的cron表达式
  6. acdream 1735 输油管道 贪心
  7. Spring学习总结(2)——Spring IOC的前世今生
  8. Visual C++ 6.0 简体中文企业版
  9. Moss网站在不同服务器的迁移
  10. matlab学习笔记(4)