zoukankan      html  css  js  c++  java
  • 编程漫谈系列(2)字段与属性

    字段(fields)与属性(properties)的定义

    • 字段与属性都是OOP(面向对象编程)中的概念。
    • 字段是指封装在类或对象中的数据,因此也被叫做数据成员(data member)或成员变量(member variable)。
    • 属性是指从属于类或对象的一种介于字段和方法之间的特殊成员:属性可以像字段一样读和写,但是读和写通常被翻译成类或对象的 getter(读取器) 和 setter(设置器) 方法。读取器和设置器统称为存取器(accessor)。
    • 在 getter 方法里,属性可以用来实现只读(readonly),计算(computed),门面(facade),惰性(lazy)以及单例(singleton)等诸多特性。
    • 在 setter 方法里,属性可以用来实现数据检验(data validation)和用户界面的实时更新(active update)。

    字段和属性的可用性

    • 在一些老的程序语言(C++, Java)中,只有字段没有属性,属性通过 getter 和 setter 来模拟实现。
    • 由于在Java语言中用于实现属性的 getter 和 setter 的方法名具有一定的命名规则,并且属性在框架中广泛使用,所以一般来说可以认为Java语言中事实上存在属性。
    • 在C#语言中,字段和属性同时存在。带 getter 或/和 setter 的为属性,不带的为字段。
    • 在一些新的程序语言(Swift,Kotlin)中,只有属性没有字段。属性缺省带有 getter 和 setter。

    只读字段/属性

    只读字段:只能设置一次值之后便只能读取不能再修改的字段。

    // C#
    readonly int year;
    // Java
    final int year = ...;
    // C++
    const int year = ...;
    

    只读属性:只有 getter 没有 setter 的属性。

    // C#
    
    

    对外只读对内可写的属性

    处于封装性的需要,有些属性需要对访问权限进行限制,在对象内部可读可写,而在对象外部则只读。

    计算属性

    门面属性

    懒惰属性

    单例属性

    数据检验

    实时更新

  • 相关阅读:
    机器人走方格问题
    一道数列的规律题(使用递归解决)
    反转单链表
    求一个二叉树的深度以及如何判断一个二叉树是一个平衡二叉树
    打印素数
    DAY28-mysql扩展与预处理-查出问题的关键
    DAY31
    jQuery很简单很基础的
    JavaScript中的事件委托及好处
    结合个人经历总结的前端入门方法
  • 原文地址:https://www.cnblogs.com/zwvista/p/8185719.html
Copyright © 2011-2022 走看看