问题标签 [protected]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++:为什么我的 DerivedClass 的构造函数无法访问 BaseClass 的受保护字段?
我有一个构造函数试图初始化基类中的字段。编译器抱怨。该字段受保护,因此派生类应该具有访问权限。
//编译错误
DerivedClass.cpp:3:错误:“DerivedClass”类没有任何名为“m_data”的字段</p>
任何帮助是极大的赞赏。先感谢您。
java - Java 中的父级枚举
在下面的代码示例中,我正在尝试测试父类中枚举的值。我得到的错误是“p.theEnum 无法解析或不是字段。”,但它与我在父类中用于测试值的代码完全相同(显然没有 p.)。
我哪里错了?:)
php - 在类外访问受保护的成员变量
我通过访问某人已经放置的类函数来查询字段的 ID。结果是一个带有受保护成员变量的对象。我正在努力了解如何访问类外的成员变量值。
php - PHP在父级中访问子级的私有属性
我有一个父对象,我在我的应用程序中用于一般 CRUD - 它具有基本的保存和检索方法,因此我不必将它们重新包含在我的所有对象中。我的大多数子对象都扩展了这个基础对象。这工作得很好,但我发现检索序列化子对象存在问题。我在创建子对象实例的父对象中使用“检索”方法,然后从未序列化子对象的属性中填充自身 - 这意味着可以“自我反序列化”对象。
唯一的问题是 - 如果子对象具有受保护或私有属性,则父对象无法读取它,因此在检索期间不会被拾取。
因此,我正在寻找一种更好的“自我反序列化”方法或一种允许父对象“看到”受保护属性的方法——但仅限于检索过程中。
代码示例:
已编辑:应该说“私人”不受保护的子属性。
c++ - C ++“未在此范围内声明的变量” - 再次
我想这是一个非常简单的问题,并且可能已经被多次回答过。但是,我真的很讨厌 C++,并且一直在寻找解决方案,但无济于事。我非常感谢您的帮助。
基本上:
是头文件,其中:
是C文件。正如你所看到的,非常简单的东西,但是,每当我尝试编译时,我都会得到:“错误:'name'没有在这个范围内声明”。
如果我注释掉 setName 方法,它就会编译。Iv 尝试将“名称”设置为公开,但仍然出现相同的错误。我还尝试在 setName() 中使用“this->name = _name”,这会导致“在非成员函数中无效使用 'this'”。
我不知道还要搜索什么。提前致谢。
java - 抽象类中的受保护数据
我的问题具体涉及 Java、抽象类和受保护数据的使用。有人告诉我,所有数据都应该是私有的,并且只使用受保护的 getter/setter。
现在,我知道我们希望保护数据免受班级临时用户的直接操纵,而公共数据成员通常是一种有问题的做法。我看过“Java protected fields vs public getters”(Java protected fields vs public getters),但我仍然怀疑:
在抽象类中比:
当抽象类恰好为子类提供父/公共设施时,我只是没有看到不利的一面,而受保护的范围旨在提供对子类的访问,同时保护临时用户的数据。我在上面提到的问题中注意到,大多数答案似乎都解决了为什么数据通常应该是私有的而不是公共的问题。我试图将我的问题专门集中在一个抽象父级中供孩子们使用的数据上。迄今为止我听到的唯一合理的评论是,使用父级受保护的数据(例如,上面的 int i)会给您留下子类中引用未在子类中声明的变量的代码。这个论点不太引人注目(请参阅基类中的通用受保护数据成员?) 您可能希望有一天更改访问权限,现在您必须尊重您的界面。这是一个抽象类,旨在 100% 的时间进行扩展。
谢谢!对书籍的特定标题/页码引用比对“..任何基本 Java 编程文本...”的引用更有帮助
============================================ 10-13-2010
这既是关于抽象类的问题,也是关于受保护数据的问题。令人失望的是,焦点似乎已经转移到对数据隐藏在 OOP 中是否是一件好事的回应上(答案:是的)。这里有很多深度涉及抽象类的性质,它与常规的非最终类有何不同,以及在抽象父类中固定数据项的名称和类型以供使用可能有什么优势孩子们的班级。我认为这里有可能将创新和更大的控制从抽象父类扩展到实现子类。我担心一般原则,例如数据隐藏的优势,会成为教条,抑制创新以及新模式和新思想的发展。
感谢所有做出贡献的人。
java - Java:跨包的受保护访问
我想了解下面的示例中发生了什么(通过子类从包外部访问受保护的成员)。
我知道对于包外的类,子类只能通过继承看到受保护的成员。
有两个包:package1
和package2
。
/li>package1
:ProtectedClass.java
/li>package2
:ExtendsprotectedClass.java
/li>package2
:UsesExtendedClass.java
可以理解的是can access中的boo()
方法,因为受保护的成员只能通过继承来访问。ExtendsprotectedClass
foo()
我的问题是,为什么通过方法中foo()
的引用访问该方法工作正常main()
,ExtendsprotectedClass
但通过引用访问时无法正常工作?epc
UsesExtendedClass
c++ - 将 make_shared 与受保护的构造函数 + 抽象接口一起使用
给定一个抽象接口和一个从该接口派生的实现,其中构造函数受到保护(这些对象的创建只能从类工厂获得 - 以实现 DI 模式),我如何在工厂函数中使用 make_shared ?
例如:
make_shared 显然无法访问 InterfaceImpl 或 IInterface 中的受保护构造函数,给我以下错误
所以在这里阅读(问题:如何使 boost::make_shared 成为我班的朋友),我尝试将以下内容放入实现类中:
它仍然无法编译。因此,我也将另一个放入 IInterface 类。仍然没有喜悦。我在这里做错了什么?
编辑:用于编译的完整源文件,带有“朋友”...
oop - 基类定义了许多受保护的方法:它是一个好的 OOP 设计吗?
我编写了一个定义了许多受保护方法的基类。这些方法在其子类中调用。这些方法为其子类定义了基本操作。例如:
我只是想知道这是否是一个好的 OOP 设计?阅读源码,我们知道Sub1
根本不需要Base.bar()
,Sub2
根本不需要Base.foo()
。我认为这有点多余。但是我不知道更好的解决方案,任何人都可以提供一些建议吗?谢谢!
moq - Moq 在调用 void 方法时修改受保护
我想使用 moq 一个 void 方法并在调用时为受保护的属性设置一个值。
就像是:
我想设置保存时的 ID 不再是 Guid.Empty。Save 是一个 void 方法,因此没有返回,并使用:
不管用..