Java中get set 方法赋值问题

2024-11-11 01:06:36
推荐回答(4个)
回答1:

setter、 gettre
setter(private String name):public void setName(String n);
getter(private String name):public String getName();

class Person{ //类名称首字母大写
private String name ;
private int age ;
public void setName(String n){
name = n ;
}
public void setAge(int a){
age = a ;
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
public void tell(){ //没有static
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}

public class Hello{
public static void main(String args[]){
Person per = new Person() ; //声明并实例化对象
per.setName("张三") ;
per.setAge(20) ;
per.tell() ;
}
}
以上的代码只是可以访问,不过没有验证,但是问题是验证在哪块?
应该在setter之中增加检查操作
class Person{ //类名称首字母大写
private String name ;
private int age ;
public void setName(String n){
name = n ;
}
public void setAge(int a){
if(a >=0 && a <= 250){
age = a ;
}
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
public void tell(){ //没有static
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}

public class Hello{
public static void main(String args[]){
Person per = new Person() ; //声明并实例化对象
per.setName("张三") ;
per.setAge(-20) ;
per.tell() ;
}
}
以后在进行开发的时候,如果有需要,则在setter上加入一些验证措施
而getter只是简单的将数据返回即可,不需要做任何的验证。

疑问?为什么现在没有在程序之中使用getter()方法?
现在类之中的getName()和getAge()两个方法虽然被定义了,但是发现
并没有被使用,那么这样的定义还有意义?
这类之中的属性定义setter、getter操作方法的目的就是为了设置和
取得属性的内容,也许某一个操作暂时不使用到取得的操作,不过从
开发来讲,必须全部提供,
class Person{ //类名称首字母大写
private String name ;
private int age ;
public void setName(String n){
name = n ;
}
public void setAge(int a){
if(a >=0 && a <= 250){
age = a ;
}
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
public void tell(){ //没有static
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}

public class Hello{
public static void main(String args[]){
Person per = new Person() ; //声明并实例化对象
per.setName("张三") ;
per.setAge(-20) ;
per.tell() ;
System.out.println(per.getName()) ;
}
}

以后在定义类的时候,所有的属性都要编写private封装,
封装之后的属性如果需要被外部操作,则编写setter、getter.

回答2:

应该用set方法:

zh.setYue(zh.getYue()+cun);

回答3:

这里不能这么赋值,因为没有地方任何变量给你赋值,你这里必须这样写
zh.setYue(zh.getYue()+cun);

回答4:

zh.getYue()+=cun;//这个赋值不了 报错 为什么?
相当于一个例子:1.00+=2.00;能成功吗?
相关可以搜索下:左值,右值的概念,以及赋值的意思