jjzjj

encapsulation

全部标签

php - 为什么不在 PHP 中使用 'protected' 或 'private'?

我一直在使用Joomla框架,我注意到他们使用约定来指定私有(private)或protected方法(他们在方法名称前面加上下划线“_”),但它们没有显式声明任何方法public、private或protected。为什么是这样?它与便携性有关吗?public、private或protected关键字是否在旧版本的PHP中不可用? 最佳答案 public、private和protected是PHP5的关键词。不幸的是,PHP4仍然有很高的安装基础(尤其是在共享主机服务中)。这是一个prettypic显示7月的使用率(法语文本)。剧

java - Android - 如何在我的项目中添加@hide 注释

我正在开发SDK,我想对方法/类使用@hide注释,我不想让使用我的SDK的用户看到它们。(与Activityimplementation-line3898中的相同)我只是尝试添加@hide注释,但我发现没有任何反应。我需要做什么才能使用@hide注释/或任何其他类似的解决方案来封装我的内部SDK的类/方法。 最佳答案 在AndroidSDK中,@hide注释仅在构建android.jarstub版本时使用。在编译时,符号从这个stubjar中导入,只有非隐藏符号可用。在设备或模拟器的运行时,符号位于平台库中,并且可以通过反射等方式

c++ - 我真的需要为 friend operator<< 为命名空间中的类竭尽全力吗?

我想实现一个运算符Paragraph)。类Paragraph有一些私有(private)数据,因此我希望(独立的)operatorhereonSO.friend语句,执行operator一切都很好。但现在我想将Paragraph放在命名空间中,比如说namespacefoo.它不再有效!如果我写:namespacefoo{classParagraph{public:explicitParagraph(std::stringconst&init):m_para(init){}std::stringconst&to_str()const{returnm_para;}private:frie

c++ - 在 C++ 中,将 friend 添加到类中会改变其内存布局吗?

此外,您在类(class)的哪个位置声明friend有关系吗?添加友元类或友元函数有关系吗? 最佳答案 不,它没有。这纯粹是编译时的事情:类似于访问修饰符本身。尽管您将声明写在类中,但您并没有真正向类中添加friend。您基本上将其他东西声明为该类的友元,并简单地允许它访问该类的私有(private)成员,就好像它们是公共(public)的一样。 关于c++-在C++中,将friend添加到类中会改变其内存布局吗?,我们在StackOverflow上找到一个类似的问题:

c++ - 在 C++ 中,给定 A 类中的一个成员函数,我们能否限制它只能访问 B 类,而不让 B 完全友元访问 A?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:cleanC++granularfriendequivalent?(Answer:Attorney-ClientIdiom)我曾多次想要这个,但一直没能想出一个合适的方法来实现它。假设我在A类中有一个成员函数。我希望能够从不相关的B类中调用该函数,但通常不能调用该函数。您可能会说,“当然,将函数设为私有(private)并将B声明为A的友元。”这就是我一直在做的,但似乎有点矫枉过正。我真的不想让B访问A中的所有内容,只是一个功能。简而言之:A::func()只能由类B调用,但B未声明为A的友元。可能吗?

c++ - Namespace or Class,只封装函数成员哪个更好

那么,假设我有几个函数来处理文件的打开/关闭。创建一个静态声明所有这些函数的类是否更好还是干脆将“public”函数放在命名空间“file”的头文件中,其余的“实现细节”放在.cc文件中?下面是代码示例。命名空间一有点长,因为我想尽可能清楚。谢谢!!类的实现标题:#ifndefFILE_H#defineFILE_H#include#includeinclude"common.h"enumErrorcode{FILE_CANNOT_OPEN,FILE_CANNOT_CLOSE};classfile{public:staticcommon::LinestoLines(std::string

c++ - 重载 operator= 作为非成员

这个问题在这里已经有了答案:Whycannotanon-memberfunctionbeusedforoverloadingtheassignmentoperator?(9个回答)关闭7年前。根据对this的回复线程,operator=不能作为非成员函数重载。因此,例如,以下内容会使编译器非常生气:classMyClass{//...};MyClass&operator=(MyClass&Left,MyClass&Right){//...}这是为什么?我有一个带有getter和setter的容器类,因此不需要成员函数,它会破坏封装。上述线程的一个答案说,这是为了确保“接收到L值作为其第

php - 用户权限树 : How to get there?

我正在实现一个产品库存管理网站,女巫有很多层权限。它有一个拥有所有类型权限的管理员,然后是2、3、4等级别……将有更少的权限。但特定用户可以拥有特殊权限,例如创建用户或阅读有关其他用户的信息。考虑以下场景:*admininserteduser1,user2anduser3.*user1inserteduser4anduser5underhissupervision.*user1editeduser4'spermissionso:user4canseealluser5'sactivity,butuser5cannotseeuser4'sactivity.*user5inserteduse

swift - 在不同文件中具有相同名称的两个类?

我不知道这是否可能,或者我是否应该做这样的事情。示例两个不同的文件,相同的枚举:Counter.swiftenumAction{caseIncrementcaseDecrement}Counterpair.swiftenumAction{//invalidredeclarationof'Action'caseResetcaseTop(Action)//ActionshouldbeCounter.ActioncaseBottom(Action)//same}我来自javascript,你可以在require(Counterpair)之后执行Counter.Action。我如何构建我的应用

swift - Swift 中函数声明和定义的分离

我正在看新的Swift。我来自C、C++、Objective-C……我注意到在swift中不可能(?)将函数的声明和定义分开。这样做的结果是结构和类的声明非常冗长和臃肿,因此很难通过查看代码来“快速了解”类。难道我做错了什么?除了尝试使功能变小等之外,是否有任何方法可以克服这个问题?提前致谢 最佳答案 在swift中,没有声明与实现的分离。这与大多数其他现代语言(如Python)一样工作。如果你想快速了解你的类,你应该使用代码折叠。简单地折叠你所有的方法和函数。并展开您想要修改/处理的方法。