在Java编程中,往往会有一个类中的属性的值要传递给另一个类的属性,那么如何传值呢?
例如:
package com.test.exercise_3;
public class Student {
public int a;
// 定义一个UnStudent类型的全局变量
public UnStudent us;
public Student() {
/*
* 调用UnStudent类的UnStudent(Student s)构造方法,a就可以得到从UnStudent类传过来的值
* this指Student类的对象
*/
us = new UnStudent(this);
}
}
package com.test.exercise_3;
public class UnStudent {
public int a = 7;
public Student s;
/*
* 要将此类中的属性a的值传到Student类中, 就要在此类中得到Student类的对象,有了这个对象就能调用Student类的属性
*/
public UnStudent(Student s) {
this.s = s;
s.a = a;
}
}
package com.test.exercise_3;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Student stu = new Student();
System.out.println(stu.a);
}
}
结果输出为:7
总结:A、B两个类,测试类C中创建A类的对象,如果要将B类中的某一个属性的值传递给A类,那么要在A类中创建B类的对象(B b=new B(this) ),这个this指A类的对象。还要在B类中重载B类的构造方法,其参数类型即为A类类型,也就是说B类得到了A类的对象,再用这个对象.属性名=要向A类传值的属性名,此时,传值成功。通俗说,就是B类拿到了A类的对象就能调用A类的属性从而改变其值。
再例如:
package com.test.exercise_3;
public class Student {
public int a = 3;
// 定义一个UnStudent类型的全局变量
public UnStudent us;
public Student() {
/*
* 要将本类的属性a的值传递给UnStudent中的属性a,调用UnStudent(int a)构造方法
*/
us = new UnStudent(a);
}
}
package com.test.exercise_3;
public class UnStudent {
public int a;
/**
*
*
* 重载构造方法
*/
public UnStudent(int a) {
this.a = a;
System.out.println(a);
}
public UnStudent() {
}
}
package com.test.exercise_3;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Student stu = new Student();
// System.out.println(stu.a);
}
}
结果输出为:3(即将Student类中属性a的值3传给UnStudent类中的属性a,也就是说两个类中属性a的值都为3)
总结:A、B两个类,测试类C中创建A类的对象,如果要将A类中的某一个属性的值传递给B类,那么要在B类中重载B类的构造方法,其参数类型即为要进行传值的属性类型,
还要在A类中创建B类的对象(B b=new B(要进行传值的属性) ),程序执行到此代码时就将值传递到B类的属性a中。