如题:
class A,class B,class C为三个不同的文件,首先在class B中声明class A,把“123”放入A的setPerID()方法中。问:在class C中如何调用class B的getPerID()方法(“得到答案123”)?
一下是我做的程序,我知道在class C中调用有问题,但不知道如何改,请高手解答,谢谢
class A{
...
public void setPerID(String sPerID) {
this.sPerID = sPerID;
}
public String getPerID() {
return sPerID;
}
}
class B{
A a=new A();
a.setPerID("123");
}
class C{
A a=new A();
a.getPerID();
}
class A,class B,class C为三个不同的文件,首先在class B中声明class A,把“123”放入A的setPerID()方法中。问:在class C中如何调用class B的getPerID()方法(“得到答案123”)?
一下是我做的程序,我知道在class C中调用有问题,但不知道如何改,请高手解答,谢谢
class A{
...
public void setPerID(String sPerID) {
this.sPerID = sPerID;
}
public String getPerID() {
return sPerID;
}
}
class B{
A a=new A();
a.setPerID("123");
}
class C{
A a=new A();
a.getPerID();
}
public void runB(){
super.setPerID("123");
}
}class C extends B {
public void runC(){
super.getPerID();
}
}然后main里面
A type = new C();
来实现
但是我觉得在实际应用中,灵活性不是很好
可以这样/** 方法一: 把属性声明为静态 **/
class A
{
private static String number = "";
}class B
{
public void setPerID() {
A.number = "123";
}
}class C
{
public String getPerID() {
return A.number;
}
}/** 方法二: 创建类A的引用 **/
class A
{
private String number = null;
public void setPerID(String str) {
number = str;
} public String getPerID() {
return number;
}
}class B
{
A a = null;
public void setA(A aa) {
a = aa;
} public void setPerId(String str) {
a.setPerId(str);
}
}class C
{
A a = null;
public void setA(A aa) {
a = aa;
} public String getPerId() {
return a.getPerId();
}
}其实可以把过程写得更加简单
class B
{
public void setPerId(A a, String s) {
a.setPerId(s);
}
}
class C
{
public String getPerId(A a) {
return a.getPerId();
}
}或者在构造器里写参数Aclass B
{
private A a;
public B(A aa) {
a = aa;
}
.........
}class C
{
private A a;
public C(A aa) {
a = aa;
} .......
}
那么不管在那里修改访问A的number属性 其结果都会是最后修改的字符串第二个方法 是直接引用原来的对象
...
public void setPerID(String sPerID) {
this.sPerID = sPerID;
}
public String getPerID() {
return sPerID;
}
}
class B{
A a=new A();
a.setPerID("123");
}
class C{
private A a
C(A aa){
this.a=aa;
}
public String getPerAID() {
return a.getPerID();
}
}
private String sPerID;
public void setPerID(String sPerID) {
this.sPerID = sPerID;
}
public String getPerID() {
return sPerID;
}
class B {
public void runB(){
setPerID("123");
}
}
class C {
public String runC(){
return getPerID();
}
}
}然后main里面这样做 A a = new A();
A.B ab = a.new B();
ab.runB();
A.C ac = a.new C();
System.out.println(ac.runC());