`
歆渊
  • 浏览: 307843 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

可以假定对象的属性全部由对象本身的方法来访问

阅读更多

这是一个非常重要, 但也是一般很容易被接受的前提; 只要遵守下面几点就可以满足要求:

   对象没有public的实例属性

   protected和package的实例属性也不要在同一个包的其他类中直接读写

   static的类方法不要直接访问对象实例属性

这在一般的java应用程序中是很容易做到的.

在处理事务时需要考虑其他代码对对象实例属性的访问, 但是在java目前的平台上, 要跟踪对象属性的访问似乎只能通过Java Virtual Machine Profiler Interface (JVMPI), 而这显得有些蹩脚, 不仅会霸占这个排他的接口而让需要它的java程序无法运行, 本身的执行效率也会打个折扣. AspectJ在这方面也仅仅是巧言声明: 它"被容许"只处理所能触及到的java代码, 它编译过程所触及不到的java代码对对象属性的访问可以不用截获.

而有了现在这个前提, 就可以不必须跟踪对象实例属性的访问, 而只是跟踪对象实例方法的调用, 假定对对象实例方法的调用都会访问其实例属性, 读或者写; 这会包含一些并不会访问实例属性的方法, 可能还有一些返回值虽然从实例属性计算得来, 但不会因对象属性被更新而变化的方法, 不过这些方法应该从比例上只是一小部分, 而且概念上认为他们访问了对象实例属性也可以成立.

分享到:
评论

相关推荐

    详解:windows server授权和访问控制技术.docx

    同样,所有者也可以允许或拒绝其他用户访问某些类型的对象及其各个属性。 **权限的继承**:这是一个非常实用的功能,允许管理员通过在容器(如文件夹)上设置可继承的权限来控制容器中所有新创建对象的权限。这样,...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point。 例子: class Point{ int x,y; String name = "a point"; Point(){ x = 0; y = 0; } Point( ...

    UML建模语言快速参考

    - **Private**: 私有的,只有该类本身可以访问。 - **Package**: 默认情况下,Java中的类如果未指定访问权限则默认为包访问权限,这意味着只能在同一个包内的其他类中访问。 #### 五、其他补充知识点 - **嵌套类**:...

    C#试题汇总(有答案)

    - C#中的引用类型是指向内存中某个位置的对象的引用,而不是直接存储对象本身。除了类、数组和接口之外,还有一种重要的引用类型是委托类型。 - 正确答案为 **C.委托类型**。 ### 6. 窗体事件 **题目描述**: - ...

    正则表达式

    JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp...

    c#学习笔记.txt

    接口成员是通过 I.M 和 I[A] 形式的成员访问和索引访问表达式访问的,其中 I 是接口类型的实例,M 是该接口类型的方法、属性或事件,A 是索引器参数列表。接口可以由类和结构实现。为了指示类或结构实现接口,在该类...

    2019年4月自考C++程序设计试题及答案解析(一).docx

    - **解析**: 在C++中定义类的成员时,可以使用`public`、`private`、`protected`等关键字来指定成员的访问级别。`extern`用于声明外部变量或者函数,`register`用于提示编译器将变量存储在寄存器中,而非类成员的...

    看雪2017安全开发者峰会ppt-10.Java_JSON反序列化之殇

    Gson在反序列化对象时,需要调用JavaBean的`set`方法来设置字段的值。它默认只能反序列化基本类型。如果遇到自定义类型,开发者需要提供自定义的反序列化器。Gson在找不到默认构造函数时会通过`sun.misc.Unsafe`机制...

    CORBA企业解决方案

    类似地,组件是否是事务性的,不是由组件本身决定,而是由它所融入的环境(或容器)来决定。 业务级代码和基础级代码的分离是提高生产率的一个关键方面。这样做的一个好处是软件在所需执行的环境中的变化可以留待...

    C++试题.doc

    **解析**: 动态对象通过指针 `s` 访问时应该使用 `*s` 来引用对象本身。答案是 D: *s。 **17. 拷贝构造函数的原型说明** - **题目**: 假定 `AB` 为一个类,则( )为该类的拷贝构造函数的原型说明。 - A: `AB(AB x)...

    Python学习笔记

    Python学习笔记中蕴含的知识点非常丰富,涵盖了Python编程语言的核心概念、语法规则、编程范式...通过阅读这些笔记,读者不仅能够加深对Python语言本身的理解,还能够学习如何高效地使用Python标准库来解决实际问题。

    《你必须知道的495个C语言问题》.pdf

    - C语言本身不支持面向对象编程,但可以通过结构体和函数指针来模拟类和继承的概念。例如,通过定义基类结构体和派生类结构体,并在派生类中包含指向基类的指针,可以在一定程度上实现继承的效果。 **2.6 我遇到...

Global site tag (gtag.js) - Google Analytics