encapsulation

在 C++ 中,给定类 A 中的一个成员函数,我们是否可以限制它只访问类 B,而不给 B 对 A 的完全朋友访问权限? [复制]

可能重复:clean C++ granular friend equivalent? (Answer: Attorney-Client Idiom) 我已经想了好几次了,但一直没能想出一个体面的方法来做到这一点。 假设我在 A 类中有一个成员函数。我希望能够从不相关的 B 类调用该函数,但通常不能调用。您可能会说,“当然,将函数设为私有并声明 B 为 A 的朋友。”这就是我一直在做的,但... »

c++

有什么理由使用自动实现的属性而不是手动实现的属性?

我了解 PROPERTIES 相对于 FIELDS 的优势,但我觉得使用 AUTO 实现的属性而不是 MANUAL 实现的属性并没有真正提供任何优势,只是让代码看起来更简洁一些。 我觉得使用起来更舒服: private string _postalCode; public string PostalCode { get { return _postal... »

c#

了解类的地图字段上的最终静态使用

我是一名 c++ 开发人员,正在努力熟悉核心 Java 概念。 我发现这令人困惑,因为我的最终静态是在构造对象后无法更改的东西。 (如果我错了,请纠正我) 我遇到了下面的实现,我觉得很困惑,因为它似乎允许将值添加到 Map 中,即使它是最终静态的 public class MockUserServiceImpl implements UserService { private sta... »

更喜欢非成员非朋友函数......在Java中? [关闭]

免责声明:这个问题是针对那些认为 Scott Meyers 在有效 C++ 的第 23 条中的建议是良好的 OO 设计的人——至少在 C++ 中是这样。 在不存在全局函数的 Java 中,这个原则起初似乎不适用,但在我看来确实适用。以 Scott Meyers 自己为例。 public class WebBrowser { public void clearCache() {} ... »

如何从 C# 中的接口隐藏已实现属性的 set 方法?

大家好…… 如果我有如下界面: interface IMyInterface { int property { get; set; } } 以及以下实现: class MyClass : IMyInterface { // anything } 如何从MyClass 的实例中隐藏set 的属性方法... 换句话说,我不希望property 的set 方法公开,这可能吗? ... »

c#

无法从派生类型的范围访问另一个实例的受保护成员

在this answer 的问题“为什么我的对象不能访问公共基类中定义的另一个对象的受保护成员?”,可以阅读: 您只能从您自己的基类实例中访问受保护的成员。 要么我没有正确理解它,要么following MCVE (live on coliru) 证明它是错误的: struct Base { void f(); protected: int prot; }; st... »

c++

Python中的封装

考虑一个 Employee 类 class Employee: def __init__(self, name, salary): self.name = name self.salary = salary emp_obj = Employee('Sam', 50000) print(emp_obj.name, emp_obj.salary) 我尝试... »

PHP OOP - 从两个函数返回 lastInsertId

我是 OOP 新手,对返回具有相同变量名的函数有疑问,例如: class CompanyManager { function createCompany() { // PDO - create the company return $db->lastInsertId(); } function createCompanyContact(... »

php

创建零大小结构的多种方法之间有什么区别?

我发现了四种不同的方法来创建没有数据的struct: struct A{} // empty struct / empty braced struct struct B(); // empty tuple struct struct C(()); // unit-valued tuple struct struct D; // unit struct (我不考虑只包含 ()s 和单变... »

封装是抽象的子集吗?

由于封装和抽象都与信息隐藏有关,我可以将封装理解为抽象的子集吗? 他们需要做的方式 instain 母亲... »

Java 面向对象设计问题:更新内部状态或返回新对象

这是一个设计问题。设计是伪代码,代表一个小例子,但我以后可能会添加更多的方法、数据、逻辑。 在这个例子中,我考虑了两种方法。在下面的execute方法中,我应该返回一个不可变的“data/bean/model”对象和execute方法的输出还是更新BusinessLogic类的状态。 两者都实现了相同的目标,我想要执行的结果,并且数据应该包含在 bean 容器中或 BusinessLogic ... »

Ada 封装和私有类型

从编译器的角度来看,在包规范中声明 Ada 类型与在正文中声明 Ada 类型有什么区别?... »

封装 QWidgets 的正确方法?

我正在制作一个 Qt 小部件(我们称之为 A),它实际上是一个子类 QGraphicsView。但是,我不想在我的小部件中公开 QGraphicsView 方法,只是基本的 QWidget 接口和我自己的一些方法。因此,我想将A 的一个实例封装为一个简单的QWidget 子类的成员,我们称之为B。 现在我想知道,绘制这个的正确方法是什么?到目前为止,我已经给B 一个布局,其唯一的项目是A 成员。... »

如何在C#中隐藏基类的私有方法?

我没有找到问题的答案,但这似乎很简单。主要的大问题是我在 dll 中购买了一些库和一些硬编码的功能,如果没有源代码,我无法重新编译该 dll。所以这里是学校层面的问题: 我们有 2 类 A 和 B class A { public void Method1() { this.Method2 (); } private void Method2() { ... »

c#

IEnumerable vs IReadonlyCollection vs ReadonlyCollection 用于公开列表成员

我花了好几个小时来思考暴露列表成员的问题。在与我类似的问题中,Jon Skeet 给出了一个很好的答案。请随意看看。 ReadOnlyCollection or IEnumerable for exposing member collections? 我通常对公开列表非常偏执,尤其是当您正在开发 API 时。 我一直使用 IEnumerable 来公开列表,因为它非常安全,并且提供了很大的... »

c#

将 C++ 过程程序转换为面向对象

有人告诉我,使用多态性、封装和继承的原则将过程式C++ program 转换为面向对象的。 标准 C++ 程序接受来自用户的数据值和过滤器值。然后,它使用简单的算法将这些值相乘,并将输出打印到屏幕上。标准程序如下所示。 我首先决定使用一个用于“TheFilter”的类和一个用于“TheData”的类,每个类都有自己的“enterdata()”、“displaydata()”和构造函数成员函数... »

c++

Eclipse 说构造函数 Email() 未定义

我正在尝试扩展我正在关注 Java 项目的教程,逐步构建电子邮件管理应用程序 (https://www.youtube.com/watch?v=U3Ibvu0htNs&t=386s)。我正在尝试使用 getter 和 setter 来允许封装完成其工作,并最终允许用户输入他们自己的名称,而不是在变量中使用预设名称。我知道代码很乱我一直在玩这个代码,然后我想承认。呵呵 package enc... »

c++ 类和静态

我有一个关于班级设计的问题。我想要一个封装一堆相关函数的类。例如一个统计类,它有静态函数来计算算术平均值、经验方差等。或者一个物理类,可以计算抛丸运动、波动等。 你如何在 main 中引用这些函数?参考统计示例,在 Java 中我会使用 Statistics.calcMean()。 ... »

c++

如何不将一个类暴露给除一个之外的任何其他类? (C#)

我有一个命名空间 ABC,它有一个表单类 F 和一个普通类 C。现在我有另一个命名空间 XYZ,其中包含许多不同的类。现在,F 仅在 C 中使用,在程序中没有其他地方使用。其他所有类都使用 C,而不是 F。 在 Visual Studio (2010) 中,从 XYZ 命名空间中的类中,我可以看到智能感知下拉列表中列出的 F(因为我已经引用 ABC 来使用 C)。我怎样才能防止这种情况发生?我只... »

c#