class Testfunction
{
private String name;//姓名
private int age;//年龄
String getName(){
return name;
}
int getAge(){
return age;
}
void setName(String a){
name = a;
}
void setAge(int a){
if(a<20)
{
System.out.println("你的年龄有误");
}
else
{
age = a;
}
}
//自我介绍方法
void Myprint()
{
System.out.println("我叫"+name+"今年"+age);
}
public static void main(String[] args)
{
Testfunction stu = new Testfunction();
stu.name = "张三";
stu.age = 15;
stu.Myprint();
}
}大家看一下上面的简单代码,这里的setXxx()和getXxx()不是可以验证数据吗?为什么我让年龄等于15的时候,上面的那个setAge()里面的内容没有打印出来??知道的,请给我解释一下,这里先谢谢了,能给我讲讲这两个函数的作用最好,谢谢……

解决方案 »

  1.   

    怎么不用setAge()来赋值?那你写来有什么用?
      

  2.   

    set方法根本没调用过。
    要这样: stu.setAge(15);
      

  3.   

    因为你的检验是在set方法中的,所以你应该是通过set方法去赋值
    Testfunction stu = new Testfunction();
    stu.name = "张三";
    stu.setAge(15);
    stu.Myprint();
      

  4.   

    请问你在那调用setAge()方法了
      

  5.   

    你定义的age是私有属性,怎么可以用stu.age = 15;
    直接来赋值,这个程序编译的时候根本就是错误的
    在main()函数里面,要这样写才行
    stu.setAge(15);
      

  6.   

    首先要明白 set  get 的意义
    是访问私有成员变量的 函数  不具有其他操作
    看看java 的规范吧
      

  7.   

    你赋值的是成员变量,而setXxx()里判断的是局部变量
    而且setXxx()也没被调用,自然结果就是你看到的那样
      

  8.   

    name和age都是private属性的。。在main方法中不能直接对他们赋值。。要使用set()方法
    比如xx.setName("Mike"); xx.setAge(23);
      

  9.   

    你能给点好的东西给我看看嘛,才学不明白这个东西,就是想不通,这两个getXxx() 和setXxx()是用来做什么的??
      

  10.   

    写了方法就要调用,否则没有必要写这个方法的。你在setAge()里确实有判断,但main()中却没调用过该方法赋值,而是直接stu.age=15,所以走的不是setAge()这个方法,所以也就没有判断是否小于20的过程
    把main()中的stu.age=15一句替换成stu.setAge(15)
      

  11.   

    你得调用方法才能显示方法中的内容,你不调用set方法他怎么能显示打印语句哪???
      

  12.   


    public class Circle {
    private int a=5;
    public static void main(String[] args) {
    Circle c=new Circle();
    c.a=10;
    System.out.println(c);
    }
    @Override
    public String toString() {
    return "Circle [a=" + a + "]";
    }}main()中设置值啊私有变量能用c.在设置值运行上面的就知道了
      

  13.   

    你写的应该是一个类似javabean的东西。
    把所以的变量设置为私有,通过get,set方法取值和赋值。
    没有调用set方法,应该写stu.setAge(15);