草庐IT

Getters-Setter

全部标签

java - 封装——当 setter 已经公开时,为什么我们需要它?

这个问题在这里已经有了答案:Whyaregetterandsettermethodimportantinjava?[duplicate](6个回答)关闭7年前。封装是隐藏数据。我想在这里听到一些非常有趣的答案。当我们已经为变量声明了publicsetter方法时,保持变量为private的意义何在?我了解封装的用法,但是当我们将setter设为公共(public)时,将变量保留为private的意义何在,我们可以直接使用public访问修饰符.是因为我们不想让其他人知道我们在后端存储数据或管理数据的确切方式吗? 最佳答案 Isitb

c++ - 为什么在 Herb Sutter 的 CppCon 2014 演讲中不推荐使用值(value) setter 成员函数(回到基础 : Modern C++ Style)?

在HerbSutter的CppCon2014演讲中回归基础:现代C++风格,他在幻灯片28(awebcopyoftheslidesarehere)中提到了这种模式:classemployee{std::stringname_;public:voidset_name(std::stringname)noexcept{name_=std::move(name);}};他说这是有问题的,因为当使用临时调用set_name()时,noexcept-ness并不强(他使用短语“noexcept-ish”)。现在,我在我自己最近的C++代码中大量使用了上述模式,主要是因为它可以让我每次都输入两个s

c++ - C++11 中的所有/大多数 setter 函数是否应该编写为接受通用引用的函数模板?

考虑一个具有N成员变量的类X,每个都有一些可复制和可move类型,并且N对应的setter函数。在C++98中,X的定义可能如下所示:classX{public:voidset_a(Aconst&a){_a=a;}voidset_b(Bconst&b){_b=b;}...private:A_a;B_b;...};上述X类的Setter函数可以绑定(bind)到左值和右值参数。根据实际参数,这可能会导致创建一个临时的并且将最终导致一个复制分配;因此,此设计不支持不可复制类型。在C++11中,我们拥有move语义、完美转发和通用引用(ScottMeyers的术语),通过以这种方式重写set

c# - Getter、setter 和属性最佳实践。 Java 与 C#

我现在正在学习C#类(class),我正在尝试找出最好的做事方式。我来自Java背景,所以我只熟悉Java最佳实践;我是C#新手!在Java中,如果我有私有(private)属性,我会这样做;privateStringname;publicvoidsetName(Stringname){this.name=name;}publicStringgetName(){returnthis.name;}在C#中,我发现有很多方法可以做到这一点。我可以像Java一样做:privatestringname;publicvoidsetName(stringname){this.name=name;}

java - getter 和 setter 是如何工作的?

我来自php世界。您能否解释一下什么是getter和setter,并给您一些例子? 最佳答案 教程并不是真正需要的。阅读encapsulationprivateStringmyField;//"private"meansaccesstothisisrestrictedtotheclass.publicStringgetMyField(){//includevalidation,logic,loggingorwhateveryoulikeherereturnthis.myField;}publicvoidsetMyField(Stri

java - 简单的 Getter/Setter 注释

您使用什么约定来评论getter和setter?这是我很长一段时间以来一直想知道的事情,例如:/***(1a)whatdoyouputhere?*@paramsalary(1b)whatdoyouputhere?*/publicvoidsetSalary(floatsalary);/**(2a)whatdoyouputhere?*@return(2b)*/publicfloatgetSalary();我总是发现我在为1a/b和2a/b写几乎完全相同的东西,比如1a)设置员工的薪水,1b)员工的薪水。这似乎是多余的。现在我可以看到对于更复杂的内容,您可能会在(a)部分中写更多内容,以提供

C++ getter/setter 编码风格

我用C#编程已经有一段时间了,现在我想复习一下我的C++技能。上课:classFoo{conststd::string&name_;...};最好的方法是什么(我只想允许读取name_字段):使用getter方法:inlineconststd::string&name()const{returnname_;}公开该字段,因为它是一个常量谢谢。 最佳答案 对于长期存在的类来说,使用getter方法是更好的设计选择,因为它允许您在将来用更复杂的方法替换getter方法。尽管对于const值似乎不太可能需要此操作,但成本低且可能带来的好处

c++ - 公共(public)数据成员与 Getters、Setters

我目前正在使用Qt和C++。我有具有私有(private)数据成员和公共(public)成员函数的类。我为类中可用的数据成员提供了公共(public)getter和setter。现在我的问题是,如果我们的类中有数据成员的getter和setter,那么将这些数据成员设为私有(private)有什么意义?我同意在Base类中使用私有(private)数据成员听起来合乎逻辑.但除此之外,拥有私有(private)成员以及它们的getter和setter对我来说似乎不合逻辑。或者我们可以将所有变量都设为公开,这样就完全不需要getter和setter了吗?拥有这些是一个好习惯吗?我知道拥有私

c++ - C++ 中访问器方法(getter 和 setter)的约定

关于C++中的访问器方法的几个问题已经在SO上提出,但没有一个能够满足我对这个问题的好奇心。我尽量避免使用访问器,因为像Stroustrup和其他著名的程序员一样,我认为一个包含许多访问器的类是糟糕的OO的标志。在C++中,在大多数情况下,我可以为类添加更多责任或使用friend关键字来避免它们。然而在某些情况下,您确实需要访问特定的类成员。有几种可能:1.完全不要使用访问器我们可以将各自的成员变量公开。这在Java中是不行的,但在C++社区中似乎没问题。但是,我有点担心应该返回对对象的显式拷贝或只读(const)引用,这是否被夸大了?2。使用Java风格的get/set方法我不确定它

objective-c - 覆盖@property setter 和无限循环

有A类:@interfaceClassA:NSObject{}@property(nonatomic,assign)idprop1;@end@implementation@synthesizeprop1;@end然后我有子类@interfaceClassB:ClassA{}@end@implementation-(id)init{self=[superinit];if(self){}returnself;}//Thisisinfiniteloop-(void)setProp1:(id)aProp{self.prop1=aProp;}@end这是无限循环,因为ClassB中的setPro