public class TestChinese { public static void main(String[] args) { Chinese.sing(); // 上面的程序代码直接使用了"类名.成员"的格式 Chinese ch = new Chinese(); ch.sing(); // 上面的程序代码直接使用了"对象名.成员"的格式 ch.singOurCountry(); } }
------解决方案-------------------- 也就是说,如果是静态的方法,就可以直接使用"类名.方法名",而如果不是静态的话,就不可以这样用,只能先定义一个对象,然后用"对象.方法名",是这样的吗?
------解决方案-------------------- 利用静态方法得一个单实例的设计模式,看能不能抛砖引玉
Java code
class A{
private A(){}
private static A instance = new A();
public static A makeA(){
return instance;
}
}
------解决方案-------------------- public class Test{ private int nostatic; private static int sstatic; public void MyMethod(){ nostatic=2;//正确,非静态方法可以访问非静态成员 sstatic=3;//正确,非静态方法可以访问静态成员 System.out.println("我是非静态方法!nostatic="+nostatic+" sstatic="+sstatic); } public static void StaticMethod(){ // nostatic=4; 不正确,静态方法不可以访问非静态成员 sstatic=5;//正确,静态方法可以访问静态成员 System.out.println("我是静态方法!sstatic="+sstatic);
}
public static void main(String[]args){
Test test=new Test(); test.MyMethod();//静态方法直接用类名调用 Test.StaticMethod();//非静态方法要先把类实例化,用对象调用