Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java多方法和实例_Java - Fatal编程技术网

java多方法和实例

java多方法和实例,java,Java,下面是一系列关于多个方法和实例的教程。作者没有详细阐述一些元素 您认为为什么他会将方法setName放在“public void”中,然后使用“public String getName”获取返回值。为什么他不把return randomName放在public void中,并在public void中声明字符串g public class voidvoid { private String randomName; public void setName(String name){

下面是一系列关于多个方法和实例的教程。作者没有详细阐述一些元素

您认为为什么他会将方法setName放在“public void”中,然后使用“public String getName”获取返回值。为什么他不把return randomName放在public void中,并在public void中声明字符串g

public class voidvoid {

private String randomName;

public void setName(String name){
    randomName = name;

}
public String getName () {
    return randomName;
}

public void saying () {
    System.out.printf("you are %s", getName());
}


}

这叫做封装

隐藏对象的内部通过以下方式保护其完整性 防止用户将组件的内部数据设置为 无效或不一致的状态。封装的一个好处是 它可以通过 允许开发人员限制软件之间的相互依赖性 组成部分


更多信息:)

使用public void设置变量值,public获取变量值是正确的方法。您可以搜索“java中的getter和setter”以了解有关该主题的更多信息。基本上,在获取和设置变量值方面,这提供了对存储名称的公共访问。saying()方法显示了getter方法的用法,在本例中是getName()。注意,变量本身被声明为私有。这意味着,除非扩展该类,否则除了通过getter和setter之外,不能从该类外部访问变量。比如说,你不喜欢弗雷德这个名字。在setName(字符串名)方法中,您可以说:

if(name.equals("Fred") {
   randomName = "Jon Doe";
}
任何时候有人试图设置名称“Fred”,它将被保存为“Jon Doe”。如果他们可以直接访问变量,他们可以随时将值设置为“Fred”。
这意味着您可以通过您的方法最终控制进入变量的内容。

这不仅仅是向最终用户显示封装内容的值。在许多程序中,最终用户永远看不到输出到标准输出(System.out在其中输出)。您的对象可能需要该
字符串
,以供以后参考,因此将其拉出而不是将其输出给stdout将更加有益

至于
getName
setName
——它们分别是访问器和变异器

访问器需要检索有关特定变量的信息,因此预期返回类型就是您需要的变量类型。由于您要返回一个
字符串
,您可能希望
getName
返回
String
,因为变量
randomName
是一个
字符串


通常,在某些条件下,一个变数只需要改变内部变量的值。此处实际上不需要返回任何内容,因此返回值为
void
。通常,您会看到返回
布尔值的变异数,以指示成功或失败,但在我看到的示例中,该返回值基本上被忽略。

当方法设置类的属性时,它被称为
setter
方法:

public void setName(String name)
由于使用此方法只能设置类的
randomename
属性,因此通常不需要返回类型。但如果需要,您当然可以添加一个返回类型。例如:

//this method will return true if the `randomname` was not set previously 
//otherwise false
public boolean setName(String name) {
    if (null == randomname )  { 
        randomname = name;
        return true;  
    }
    else return false;    
}
与setter方法类似,如果可以使用方法获取属性,则通常称为
getter
方法:

public String getName(String name)
Saying方法用于打印
randomname
属性。这是必需的,因为您不能在类范围外打印
randomname
,因为它是私有的:

//this will print the value of randomname
public void saying ()

//another scenario
voidvoid foo = new voidvoid () ;
foo.setName("Hello world") ;

//this line will generate an erro
System.out.println (foo.randomname) ; 

//this will compile fine
foo.saying () ;

//you can also achieve the same result using getName
System.out.println (foo.getName() ) ; 
如果您想
检索/设置
属性,那么为
private
属性使用setter/getter方法是
强制的
,但为
public
属性使用
可选的
,但我认为这是一个
好的实践

他为什么不把名字放在公共空间里

我不明白这个问题。他将它放在
公共静态字符串getName()方法中。他还能把它放在哪里

在public void saying方法中声明字符串g

public class voidvoid {

private String randomName;

public void setName(String name){
    randomName = name;

}
public String getName () {
    return randomName;
}

public void saying () {
    System.out.printf("you are %s", getName());
}


}

因为这会使它成为局部变量而不是实例成员,所以不能用其他方法设置它。

从setter方法返回
this
也是很常见的,因此可以链接它们。