用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型的也不行!改如何解决啊?
//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型的也不行!改如何解决啊?
A a=new A(); //声明一个A对象
public B() {
System.out.println(a.strIPAddr+" " +a.strPort);
}
}还有没有别的办法,只用声明一次在别的*.java类中都可以使用
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亦可
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
这样写:
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;
}
}
//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);
}
......
}
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);
}
......
}}
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);
.....
}
.....
}
在JAVA里,Everything is an Obejct!!
这句话要先理解了啊。。