用JBuilder建立两个类:
//A.java
package test;
public class A{
String strIPAddr="192.168.1.200";
String strPort="5000";
.....
}//B.java
package test;
public class B{
     public B(){
          System.out.println(strIPAddr+"  "+strPort);
     }
......
}编译起来会有错误,说B.java里的strIPAddr, strPort没定义!这是为什么?不是说没有声明类型的变量(strIPAddr,strPort),可以被包内的其他成员访问嘛?
另外将这两个变量类型设成public型的也不行!改如何解决啊?

解决方案 »

  1.   

    有一个解决方案是:public class B {
      A a=new A();  //声明一个A对象
      public B() {
        System.out.println(a.strIPAddr+" " +a.strPort);
      }
    }还有没有别的办法,只用声明一次在别的*.java类中都可以使用
      

  2.   

    有两种方法:
    1。把A做成一个接口,携带你定义的常量,在类B里面implements A
    2。把A做成static助手类,
    public class A{
     public static final String key=value;
     public static String getKey(){return key;}
     ......
    }在类B的任何执行体内,使用 A.key 或 A.getKey() 方法取值BTW:—— 
    为了更好的灵活性,在助手类中,
    可以写一个static{}过程,利用配置文件properties动态load这些常量
    XML亦可
      

  3.   

    Modifier
    Relation of B&D         No Modifier  Public          Protected    Private
    Derived & Same Package          Yes     Yes Yes(same with C++)     No
    Not Derived & Same Package          No     No         No     No
    Derived & Different Package          No     Yes Yes(same with C++)     No
    Not Derived & Different Package     No     No          No      No
      

  4.   

    你和我一样是入门级的。
    这样写:
    public class Test2 {
    private Testee myTestee = new Testee();
    public Test2(){
    System.out.println(this.myTestee.getStrIPAddr() + "  " + this.myTestee.getStrPort());
    }

    public static void main(String[] src){
    new Test2();
    }
    }class Testee{
    private String strIPAddr = "192.168.1.200";
    private String strPort = "5000";


    /**
     * @return Returns the strIPAddr.
     */
    public String getStrIPAddr() {
    return strIPAddr;
    }
    /**
     * @param strIPAddr The strIPAddr to set.
     */
    public void setStrIPAddr(String strIPAddr) {
    this.strIPAddr = strIPAddr;
    }
    /**
     * @return Returns the strPort.
     */
    public String getStrPort() {
    return strPort;
    }
    /**
     * @param strPort The strPort to set.
     */
    public void setStrPort(String strPort) {
    this.strPort = strPort;
    }
    }
      

  5.   

    这样改一下也行:
    //A.java
    package test;
    public class A{
    static String strIPAddr="192.168.1.200";
    static String strPort="5000";
    .....
    }//B.java
    package test;
    public class B{
         public B(){
              System.out.println(A.strIPAddr+"  "+A.strPort);
         }
    ......
    }
      

  6.   

    可以这样写
    package test;
    public class A{
    String strIPAddr="192.168.1.200";
    String strPort="5000";
    .....//类B
    public class B{
         public B(){
              System.out.println(strIPAddr+"  "+strPort);
         }
    ......
    }}
      

  7.   

    我觉得像这样要好写,至少符合封装等特性
    package test;
    public class A{
      private String strIPAddr="192.168.1.200";
      private String strPort="5000";
      .......//类B
    public class B{
      A a=new A();
      public B(){
        System.out.println(a.strIPAddr+" "+strPort);
        .....
      }
      .....
    }
      

  8.   

    -_-!!
    在JAVA里,Everything is an Obejct!!
    这句话要先理解了啊。。