关于OOP Java中的函数的基础知识

时间:2016-04-08 04:27:30

标签: java spring-mvc

public void setTo(String to) {
        this.to = to;
    }

    public String getTo() {
        return to;
    }

上面的代码是做什么的?在我的项目文件中,我搜索setTo函数并且找不到setTo(),那么它是如何被调用的?这是指?

5 个答案:

答案 0 :(得分:0)

看起来你有三个问题。我将按顺序回答它们:

以上代码的作用是什么?
这些方法允许类外的代码在类中设置和检索to变量值,即使它已被声明为私有。

在我的项目文件中,我搜索了setTo函数,但没有找到setTo(),那么它是如何被调用的?
Spring使用setter方法进行依赖注入。基本上,Spring库中的Java会自动查找这些变量名,并调用以变量命名的相应方法,并设置'在名字前面。
IDE可以自动生成getter和setter,并且由于你需要Spring的setter,人们往往也会让IDE生成getter,即使他们不打算使用它们。

,这指的是什么?
this是一个范围关键字 this.to指的是名为to的变量,它是这些getter / setter方法所在的类的一部分。 ' to'没有' this.'是指参数定义中的(String to),它是调用传递的参数。

答案 1 :(得分:0)

在面向对象编程中,其他类只能访问程序中的某些变量是错误的,因为在编写较大的程序时,您可能会在不知情的情况下更改某些变量。为了阻止这种情况,我们将您的类中的变量设为私有,并创建getter和setter。第一种方法是setter,它可以将类中的私有变量设置为用户想要的。这将阻止许多错误发生。

  this 

是一个调用当前所在类的关键字。如果作为参数传入的变量与在类顶部声明的私有变量相同,我们使用 this 来引用类顶部的变量。

答案 2 :(得分:0)

这两种方法是您班级属性setter-getter的{​​{1}}。

您的源代码可能无法调用这些方法,但这些方法仍然被某些框架/第三方库调用,例如您在项目中使用的toJSF

答案 3 :(得分:0)

基本上,“Getters”和“Setters”是专门设计用于与Fields交互而不直接操作字段的方法。这称为“FieldEncapsulation”

https://en.wikipedia.org/wiki/Field_encapsulation

您可以访问它的方法,而不是直接访问Field。您可以限制代码中的使用,即不允许任何获取或设置,或两者兼而有之。

如果您有权访问Field本身,您可以执行任何操作,但如果您拆分该字段的方法,则可以

  1. 更好地操纵野外行动。
  2. 让您的代码更清晰(text.setName(name)比撰写text = "name";
  3. 更容易理解
  4. 限制对部分代码的访问(取决于谁使用您的代码)。
  5. 某些代码还专门使用getter / setter,而不是字段,所以确保你的字段有Getters / Setters是一个很好的做法。

    例如,如果未设置getter / setter,Apache BeanUtils.copyBean()将不会复制bean。

    你问了什么

    public void setTo(String to) {
            this.to = to;
        }
    
        public String getTo() {
            return to;
        }
    

    意味着而不是说

    String setTo = "hello"; 
    
    or 
    
    String setTo2 = setTo;
    

    你可以做到

    setTo("hello");
    
    or
    
    String s2 = getTo();
    

    因此setTo需要一个String参数,然后将我们的“to”字段String to;提供给参数的值。

    getTo然后将我们的字段输入并返回。

    在某些情况下,人们会在set / get语句中添加其他代码,但我不确定它有多常见。

    希望这有帮助!

答案 4 :(得分:0)

这些是名为“”的类全局字符串变量(或属性)的 Getter Setter 方法。相关的类通常与 getter setter 方法包含在同一类中,因为它们与它们相关的变量也包含在内。如果您在Class构造函数下查看Class代码的顶部,您应该能够找到String变量' to ',例如:

private String to = ""; // or something similar

通常,如果有一个名为“ to ”的变量,还有另一个名为“来自”的变量(但并非总是如此),它也可能有 getter 和 setter 方法。

Getter Setter 方法允许您在运行时从另一个类检索和修改类中包含的变量数据,例如:

MySpecialClass myClass = new MySpecialClass();

// Use the 'to' variable getter to retrieve its current 
// contents and place those contents into the 'toVar' variable.
String toVar = myClass.getTo();

// Display the contents...
System.out.println(toVar);  

// Set the 'to' variable within the MySpecialClass Class 
// to hold the string "I hold this now"...
myClass.setTo("I hold this now");

// Use the 'to' variable getter again to retrieve its new 
// contents and place those contents into the 'toVar' variable.
toVar = myClass.getTo();

// Display the contents again...
System.out.println(toVar); 

现在 MySpecialClass 中包含的代码可以使用“”变量及其新数据值。您会注意到Java类库以这种方式执行操作,与为JButton或JLabel等设置特定属性非常相似。