日期:2014-05-20  浏览次数:20609 次

方法的引用,请高手解答,谢谢
如题:
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
{
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();
}
}

或者在构造器里写参数A

class B
{
private A a;
public B(A aa) {
a = aa;
}
.........
}

class C
{
private A a;
public C(A aa) {
a = aa;
}

.......
}