您的位置:程序门 -> java -> j2se / 基础类



java中定义的成员变量可以没有set***方法么?如果没有set***方法的话,会怎么样?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


java中定义的成员变量可以没有set***方法么?如果没有set***方法的话,会怎么样?
发表于:2007-07-13 16:37:38 楼主
java中定义的成员变量可以没有set***方法么?如果没有set***方法的话,会怎么样?
请具体说说,谢谢!!!!!!
发表于:2007-07-13 16:39:561楼 得分:0
set也就是一个方法。通常是用来设置属性值的。所以没有set方法也没什么关系。就是不许别人直接设置你的属性值而已咯。
发表于:2007-07-13 16:42:222楼 得分:0
把set方法想象成和别的方法一样的方法就好了。他没什么特别。只不过符合java   bean的约定,
在很多框架里可以被直接识别,比如spring框架中就是根据配置文件通过set方法来设置属性的。
发表于:2007-07-13 16:45:433楼 得分:0
那如果没有set方法,那怎么对这个变量进行设值啊?
发表于:2007-07-13 16:47:284楼 得分:0
比如类a的成员变量为:
private   string   stra   =   null;
如果没有对外的get,set方法,那么只有类a能够变更和访问a的值

如果为
protected   string   stra   =   null;
如果没有对外的get,set方法,那么只有a和a的子类都可以直接变更和访问a的值

如果为
public   string   stra   =   null;
如果没有对外的get,set方法,那么所有获取a实例的类都能变更和访问a的值

set方法只是起一个规范作用,控制成员变量的访问,同样对于set方法的修饰符(private,protected,public)也能够控制该类成员值的变更与访问;同时在set方法中还可以对成员变量进行一些控制和转换等
发表于:2007-07-13 16:47:295楼 得分:0
你想用就写不想用就可以不写..
发表于:2007-07-13 16:47:586楼 得分:0
可以没有,没有的话,如果是private,别人就无法访问了,如果是public,那么还是可以直接存取,但是破坏了oo的封装原则。
发表于:2007-07-13 16:50:347楼 得分:0
没有set方法也能设值的,
public   class   a   {
    private   string   stra   =   null;

    public   static   void   main(string[]   args)   {
        a   a   =   new   a();
        a.stra   =   "aaa ';
        system.out.println(a.strx);
    }
}

结果输出:   aaa
发表于:2007-07-13 16:51:548楼 得分:0
没有set方法的结果是,不能调用set方法。
发表于:2007-07-13 16:57:219楼 得分:0
没有set的话当然可以
不过想赋值的话就只能把属性定义成public
这样的话就不能限制了,
而set方法就可以判断set值是否符合你的要求
明白了吗?
发表于:2007-07-13 16:59:4710楼 得分:0
没有set方法的结果是,不能调用set方法。
-------------------------------------

太对了!hoho~
发表于:2007-07-13 17:00:3011楼 得分:0
可以写构造函数嘛!
发表于:2007-07-13 17:01:3912楼 得分:0
up
                全局变量!
发表于:2007-07-13 17:03:2913楼 得分:0
呵呵,那属性和成员变量有什么不一样?
发表于:2007-07-13 17:05:1214楼 得分:0
java中定义的成员变量可以没有set***方法么?
答:当然

如果没有set***方法的话,会怎么样?
答:不会怎么样
发表于:2007-07-13 17:22:1915楼 得分:0
呵呵,那属性和成员变量有什么不一样?
发表于:2007-07-13 17:26:0316楼 得分:0
属性是java里的说法。成员变量是c/c++的说法。意思一个样。
发表于:2007-07-13 19:08:0417楼 得分:0
可以不用
得看情况
一般set方法是用来设置private属性的值的
如果你的private值不需要改变,那就没必要设置
发表于:2007-07-13 19:17:4618楼 得分:0
1。   get,set方法主要是用来封装的,目的是让其他类能修改本类中的private属性。如果你不用,private   定义属性的话   用get,set就是多余。
2。   封装也可以自己定义方法名,你要真看get,set不爽   自己起名字。。。。。
发表于:2007-07-13 19:33:5519楼 得分:0
弱智
发表于:2007-07-13 19:37:0020楼 得分:0
鄙视楼上,操,谁tm不是从不会到会的,就你bb。   还是带*的,人品极度有问题。   严重鄙视中。。。。。
发表于:2007-07-14 09:26:0421楼 得分:0
我们不跟"crazygou(从前,有个人叫小蔡,被放了一夜,馊了)"这种小人斤斤计较,我们度量大点,可能我们都是弱智,他一生下来就精通java了!
发表于:2007-07-14 09:30:5822楼 得分:0
不小心踩到某些人的尾巴了...
发表于:2007-07-14 09:34:1723楼 得分:0
///////////
发表于:2007-07-14 09:45:4724楼 得分:0
sureyor()   (   )   回答得很容易理解。
其实主要是一个编码的规范约定,你不这样写也没有事情,你写成别的方法名来实现同样的功能也行,只不过别人看起来麻烦,代码的可读性差。而且在javabean里面也不行。
呵呵,不知道讲得对不对。
发表于:2007-07-14 10:05:1225楼 得分:0
该说的都说了,没有也可以
发表于:2007-07-14 16:45:4526楼 得分:0
没有set方法也能设值的,
public   class   a   {
    private   string   stra   =   null;

    public   static   void   main(string[]   args)   {
        a   a   =   new   a();
        a.stra   =   "aaa ';
        system.out.println(a.strx);
    }
}

结果输出:   aaa

---------------------
汗一个       你在其它类里面用这个类再试试看
发表于:2007-07-14 17:39:5627楼 得分:0
可以没有,set**和get**方法仅仅是方法而已,和其他方法没有别的区别,有其他方法也可以实现set**和get**方法的功能,javabean中一般使用其命名。
发表于:2007-07-14 19:32:4128楼 得分:0
没有set方法也能设值的,
public   class   a   {
    private   string   stra   =   null;

    public   static   void   main(string[]   args)   {
        a   a   =   new   a();
        a.stra   =   "aaa ';
        system.out.println(a.strx);
    }
}

结果输出:   aaa

---------------------
汗一个       你在其它类里面用这个类再试试看

---------------------
好经典的一段代码发生在这里.............

发表于:2007-07-14 20:08:3129楼 得分:0
没有set   等于   java   非   面向对象语言~   没封装性可言
发表于:2007-07-14 20:50:2130楼 得分:0
1。   get,set方法主要是用来封装的,目的是让其他类能修改本类中的private属性。如果你不用,private   定义属性的话   用get,set就是多余。
2。   封装也可以自己定义方法名,你要真看get,set不爽   自己起名字。。。。。


linshaojie(枫陵)   (     说的很有道理
发表于:2007-07-14 21:37:5331楼 得分:0
没有set方法也能设值的,
public   class   a   {
    private   string   stra   =   null;

    public   static   void   main(string[]   args)   {
        a   a   =   new   a();
        a.stra   =   "aaa ';
        system.out.println(a.strx);
    }
}

结果输出:   aaa

---------------------
汗一个       你在其它类里面用这个类再试试看

---------------------
好经典的一段代码发生在这里.............

----------------------------------------
看我四楼的回复,我的这段代码是有前提的,汗呀!!!
发表于:2007-07-15 01:21:3332楼 得分:0
我记得我学c++的时钟类是这么说的,set方法就是访问时钟类private属性的一个外部接口。
发表于:2007-07-15 09:14:1733楼 得分:0
楼主java学得可能还比较迷糊


快速检索

最新资讯
热门点击