使用setProperty设置类变量的值

时间:2012-04-16 13:34:47

标签: java

为什么我需要使用setProperty才能在我的java类中设置变量的值

当我可以创建变量的实例并使用intance来访问我的变量并赋值。

4 个答案:

答案 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,它根据所有权,隐私级别,对象树中的层次结构等定义了哪些对象应该可以访问哪些属性

它还允许您使用属性执行更高级的操作,例如使它们同步。这允许您确保在访问属性时保留顺序,这样您就不会不按顺序覆盖值。

当我第一次学习编程时,所有这些东西对我来说并不明显,但随着你对编程的了解越来越多,原因和好处开始出现并且更有意义。