‘壹’ 关于java构造器中如何初始化一个对象的变量
你可以使用反射来实现。
UserBean
bean
=
new
UserBean();
Field[]
fs
=
userCla.getDeclaredFields();
for(int
i
=
0
;
i
<
fs.length;
i++){
Field
f
=
fs[i];
f.setAccessible(true);
//设置些属性是可以访问的
f.set(bean,"12")
;
//给属性设值
}
‘贰’ 在java中,set和get方法什么时候用是用来干什么的哎,有点儿犯迷糊了。。。
看来楼上的回复和你的追问,感觉到你对面向对象不是太清楚。
在java中,每个类都至少有一个构造方法,如果你没有写,系统会自己添加一个默认的构造方法。
构造方法的主要用来初始化对象成员的,使你在使用其它成员方法时,确保数据成员的状态。
构造方法的类型有简单构造、拷贝构造等,你可以看看相关资料。
get和set方法分别是用来获取和设置对象中数据成员值。下面给你列举一些用法:
1、当数据成员是 private 时,只能通过get 和 set()来设置,因为这些数据成员不能被直接访问。
2、当需要对输入的数据进行变换时。如能过输入任意整数来设置奇偶标志。这时必须对输入数据
进行运算后,才能赋值。
给你一个例子吧:
class A {
private int value;
int getValue();
void setValue(int value) { this.value = value};
public static void main() {
A aa = new A();
// 下面这句将出错。
aa.value = 5;
// 这样就正确了
aa.setValue(5);
}
}
多写一个程序,你就会掌握的更好啦。
‘叁’ java里面的set方法和带参数的构造方法效果是不是都一样
不正确的
public
class
Test{
private
String
s;
public
Test(String
s);
public
void
setS(String
s){this.s=s;}
如果写成这样s并没有完成初始化。而必须手动调用set方法才能完成初始化,譬如
public
Test(String
s){
setS(s);
}
但是日常代码规范不允许这样
一般都是
public
Test(String
s){
this.s
=
s;
}
但是同时还提供对外setS的接口
public
void
setS(String
s){
this.s
=
s};
‘肆’ Java类属性初始化是什么
1.我们都知道java是面向对象的语言, 那么类就好比是一个模板, 比如Student类, 这个类其实是一个模板, 是一个规范.
然后我们执行下面这行代码
Student xiaoMing = new Student();
就相当于我们用Student这个模板去生成了一个对象, 这个对象叫xiaoMing.
如果Student这个类有一个属性private int age;当我们只是做上面new对象的动作时候, xiaoMing的age并没有被赋值, 只是初始化成了0
(数值类型的属性初始化都是0, String则是null, 例如有个字符串类型的属性name就会是null)
然后xiaoMing.setAge(10); 那么这个时候xiaoMing的age属性才变成10,
所以类属性初始化指的就是在new对象的时候对各个属性赋予一个初始化的值.
2.为什么要用构造方法进行属性初始化:
这个并不是强制的, 构造方法分成无参构造和带参构造, 用构造方法对属性进行初始化只是单纯的为了方便而已.
‘伍’ java的set方法
我怎么没明白呢? xx是个类还是个java primitive type?给java 变量赋值用 =
变量 = 值;
就行了啊。
看你写xx.setParentId ('0');估计xx是个类?xx有个变量叫parentId? 你想给这个parentId一个值?
你可以在xx类里叫一个set方法
Class XX{
private int parentId;
public void setParentId(int parentId){
this.parentId = parentId;
}
}
外部调用时 xx.setParentId(0);就可以。
当然,如果parentId是字符串,就把int的地方改成String,然后调用xx.setParentId("0");
‘陆’ java组件初始化
问题一:
书上的简写方法
JButton jb=new JButton("OK"); //先创建
add(jb); //再添加
--------
add(new JButton("OK")); //合体写法
问题二:
class test extends Frame
类test继承了Frame类,于是test类就是Fream类了(代表)
在用构造方法构造一个自己的对象public test { }
问题三:
public class HelloWorld extends JFrame
public HelloWorld()
{
super();//调用本类的父类的构造函数
this.setSize(300, 200);//设置本类创建的对象(窗体)的大小
this.getContentPane().setLayout(null);//设置对象的版面
this.add(getJLabel(), null);//
this.add(getJTextField(), null);//
this.add(getJButton(), null);//
//上面3句是调用本类的3个方法来创建对象,用add()方法添加到面版上
//this. 是调用自己类创建的对象的方法或者属性
this.setTitle("HelloWorld");
}
private javax.swing.JLabel getJLabel() {
...
...
}
//类里的一个方法,返回值是JLable类型。是个private(私有),只有自己类的对象才能调用。
他的作用就是创建一个JLabel的对象并返回
在上面的this.add(getJTextField(), null);你就懂了吧,调用getJTextField()方法得到一个JTextField对象,在添加到面版
分啊
‘柒’ java中创建对象了,显示初始化值和构造函数初始化对象的区别先后执行顺序是什么
两个都可以初始化值,本质上没有区别,不同的是执行的先后。构造方法初始化值时需要包含有参的构造方法,创建对象时使用Object obj = new Object(arg1,arg2)的形式,你说的显示初始化值应该是使用set方法吧,比如obj.setArg1(arg1)的形式。执行顺序肯定是构造方法的形式要在前了,因为在对象创建之后就会给属性赋值,而set方法形式赋值只会在你调用set方法时才会赋值。
再插一点题外话:其实在对象创建时成员变量已经初始化了,只是初始化的都是变量对应类型的默认值,比如int类型的默认值是0,引用类型默认值是null,boolean类型默认值是false。