我对getter/setter和构造函数的使用有点困惑(请参阅下面的代码示例)publicclassExampleClass{privateintvalue=0;publicExampleClass(){value=0;}publicExampleClass(inti){this.value=i;}publicintgetValue(){returnvalue;}publicvoidsetValue(intval){this.value=val;}publicstaticvoidmain(String[]args){ExampleClassexample=newExampleClass
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭6年前。我看到了一段代码,其中getter和setter方法被声明为私有(private)的。我试图弄清楚它背后的逻辑,我真的很难理解你为什么要将它们声明为私有(private)?这与我们试图通过getter和setter实现的目标完全相反。 最佳答案 我能想到几个原因:您想阻止future的公共(public)访问。如果其他程序员看到您的代码并想要访问变量,但没有setter和getter,他可能会认为您只是忘记了它们
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭6年前。我看到了一段代码,其中getter和setter方法被声明为私有(private)的。我试图弄清楚它背后的逻辑,我真的很难理解你为什么要将它们声明为私有(private)?这与我们试图通过getter和setter实现的目标完全相反。 最佳答案 我能想到几个原因:您想阻止future的公共(public)访问。如果其他程序员看到您的代码并想要访问变量,但没有setter和getter,他可能会认为您只是忘记了它们
以下是两种方法:具有所有类属性的构造函数优点:我必须输入准确数量的参数类型,所以如果我出错,编译器会警告我(顺便说一句,有没有办法防止错误地切换参数列表上的两个Integer的问题?)缺点:如果我有很多属性,则实例化行可能会变得很长,并且可能跨越两行或更多行setter和默认的空构造函数优点:我可以清楚地看到我在设置什么,所以如果我做错了什么,我可以在输入时立即查明它(我不能犯之前切换两个变量的错误同类型)缺点:具有大量属性的对象的实例化可能需要几行(不知道这是否真的是一个缺点),如果我忘记设置一个属性,编译器不会说什么。你会做什么,为什么?您是否知道建议的任何灯光模式(考虑到每次实例
以下是两种方法:具有所有类属性的构造函数优点:我必须输入准确数量的参数类型,所以如果我出错,编译器会警告我(顺便说一句,有没有办法防止错误地切换参数列表上的两个Integer的问题?)缺点:如果我有很多属性,则实例化行可能会变得很长,并且可能跨越两行或更多行setter和默认的空构造函数优点:我可以清楚地看到我在设置什么,所以如果我做错了什么,我可以在输入时立即查明它(我不能犯之前切换两个变量的错误同类型)缺点:具有大量属性的对象的实例化可能需要几行(不知道这是否真的是一个缺点),如果我忘记设置一个属性,编译器不会说什么。你会做什么,为什么?您是否知道建议的任何灯光模式(考虑到每次实例
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭7年前。GettersandSettersarebad简要阅读上面的文章,我发现getter和setter是糟糕的OO设计,应该避免使用它们,因为它们违背了封装和数据隐藏。既然是这种情况,在创建对象时如何避免它,以及如何在模型对象中考虑到这一点。在需要getter或setter的情况下,可以使用哪些其他替代方法?谢谢。 最佳答案 你错过了重点。那篇文章的有效且重要的一点是:Don'taskfortheinformatio
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭7年前。GettersandSettersarebad简要阅读上面的文章,我发现getter和setter是糟糕的OO设计,应该避免使用它们,因为它们违背了封装和数据隐藏。既然是这种情况,在创建对象时如何避免它,以及如何在模型对象中考虑到这一点。在需要getter或setter的情况下,可以使用哪些其他替代方法?谢谢。 最佳答案 你错过了重点。那篇文章的有效且重要的一点是:Don'taskfortheinformatio
我无法决定哪种方法更适合创建具有大量字段(10+)(都是必需的)getter/setter的构造方法的对象。构造函数至少您强制设置所有字段。JavaBeans更容易查看正在设置的变量,而不是一个巨大的列表。构建器模式在这里似乎不适合,因为所有字段都是强制性的,构建器要求您将所有强制性参数放入构建器构造函数中。谢谢,D 最佳答案 更好的方法(恕我直言)是使用某种构建器:MyClassa=newMyClassBuilder().blah("blah").foo("foo").doStuff().toMyClass();MyClass仍然
我无法决定哪种方法更适合创建具有大量字段(10+)(都是必需的)getter/setter的构造方法的对象。构造函数至少您强制设置所有字段。JavaBeans更容易查看正在设置的变量,而不是一个巨大的列表。构建器模式在这里似乎不适合,因为所有字段都是强制性的,构建器要求您将所有强制性参数放入构建器构造函数中。谢谢,D 最佳答案 更好的方法(恕我直言)是使用某种构建器:MyClassa=newMyClassBuilder().blah("blah").foo("foo").doStuff().toMyClass();MyClass仍然
本文主要内容:解释setter和getter的使用方法解释@property装饰器的妙用在python中,setter和getter方法并不像其它编程语言中的那样。基本上,在面向对象编程语言中,使用setter和getter方法的主要目的是为了确保数据的封装。不像其它面向对象编程语言,python中的私有变量并不是真正的隐藏字段。在python中,通常在以下情况会用到setter和getter方法:在获取或者设置属性值的时候使用setter和getter方法为其添加验证逻辑避免对类的某些字段直接访问,比如类的私有变量不应该被外部调用者直击访问或者修改使用普通函数实现setter和getter方