小弟刚刚接触JAVA,进几天在学习封装和构造方法等面向对象的特征,但有一处不太明白了例如有一个类public class Pracetice {
private String name;
private int age;

public Pracetice(){}
public Pracetice(String name,int age){
this.name = name;
this.age = age;
}

public String getName(){
return name;
}

public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
if(age >100 || age < 10){
this.age = 20;
}else{
this.age = age;
}
}
}我用方法对属性进行封装后,如果在实例化时用带参构造的话,那setAge()方法对属性的限制就没用了啊不知道实际当中程序员对类的封装和构造是怎么写的?

解决方案 »

  1.   

    实例化完了,程序中还可能需要改变age的值啊
      

  2.   

    而且如果要限制的话,构造里面应该调用setAge啊
      

  3.   

    你没有去调用setage()他也会限制?
      

  4.   

    恩,我自己想的就是在带参构造中写上this.age = setAge(age);但我书上写带参构造时都是像我1L那么写的,所以糊涂了
      

  5.   


    在我的理解,实例化一个类,它的各个属性的值就是拿来用的,所以当用带参构造实例化后,以后就用get方法拿来用就行了,那这样set方法的限制就没用了
      

  6.   

    set方法是用来重新赋值你在方法里定义的值,实例化一个类是运行构造方法里面的内容,不关其没调用的方法的事,你自己设一些输出语句来调试一下就会明白的了。
      

  7.   


    public Pracetice(String name,int age){
         setName(name);
         setAge(age);
    }