为什么我需要使用setProperty才能在我的java类中设置变量的值
当我可以创建变量的实例并使用intance来访问我的变量并赋值。
答案 0 :(得分:3)
您所指的是Encapsulation。它是面向对象编程的基石之一。您通常希望限制其他代码使用类的内部结构的能力。
想象一个简单的例子,将整数值设置为负值将使您的类灾难性地失败。如果有setter
,您可以更好地处理这个问题,例如:
public void setNumber(int number)
{
if (number < 0)
{
number = 1;
}
this.number = number
}
或(更有可能)
public void setNumber(int number)
{
if (number < 0)
{
throw new Exception("Number can't be less than 0");
}
else
{
this.number = number
}
}
正如Raveesh Sharma在下面的评论中所指出的,这就是为什么所有实例变量应该被声明为私有的原因。
答案 1 :(得分:0)
这是面向对象的封装原则的一般实现。当使用setter没有或没有最小优势时,有很多情况。但是,有些情况下它可以帮助您免于难以发现错误。
实施例
Class Person
Integer age;
....
setAge(Integer age )
{
if (this.age<age || age>120)
{
Throw new RuntimeException("The age: "+age+"is invalid");
}
else {
this.age=age;
}
随着程序的复杂性增加,这可以帮助您更早地发现错误。由于您可能不知道程序将如何随着时间的推移而发展,因此通常最好在谨慎方面犯错并使用getter / setter开始。大多数IDE都让它变得相当轻松。
答案 2 :(得分:0)
您确定可以通过直接访问给定实例中的属性来分配值,但这肯定违反了Java面向对象原则的基础知识。
Java OO中的最佳实践建议您通过将类设置为私有来封装类中的属性,并通过getter / setter提供对它们的访问。
应用此原则是减少类之间耦合的一种方法。
答案 3 :(得分:0)
您不需要使用getProperty()
或setProperty()
(称为getter和setter方法),但它是访问类级别属性的首选方式Java的。它是面向Obejct的编程中使用的基本原理,称为Encapsulation,它根据所有权,隐私级别,对象树中的层次结构等定义了哪些对象应该可以访问哪些属性
它还允许您使用属性执行更高级的操作,例如使它们同步。这允许您确保在访问属性时保留顺序,这样您就不会不按顺序覆盖值。
当我第一次学习编程时,所有这些东西对我来说并不明显,但随着你对编程的了解越来越多,原因和好处开始出现并且更有意义。