public class MethodCall
{
public static void main(String[] args)
{
Test.sayStatic();
Test test = new Test();
test.sayInstance();
}
}
class Test
{
public static void sayStatic()
{
System.out.println("這是一個靜態方法。");
}
public void sayInstance()
{
System.out.println("這是一個實例方法。");
}
}
我的理解:
public class Authorization {
public static final int MANAGER = 1;
public int manager;
public static void main(String[] args) {
Authorization A=new Authorization();
A.manager=1;
Test B=new Test();
System.out.println(B.canAccess(A.manager)+"不同類下非靜態的實例方法");
//非靜態方法必須通過實例調用,方法是Test類下的方法,所以用Test屬性的實例來調用
System.out.println(Test.Access(A.MANAGER)+"不同類下靜態的實例方法");
//靜態的方法可以不需要實例來調用,可以直接用方法名調用,這里的Access方法不在Authorization類下,所以要寫上類名注明來處
System.out.println(A.couldAccess(A.manager)+"同一個類下非靜態的實例方法");
//這里的couldAccess方法在Authorization類下且為非靜態的,所以要用Authorization屬性的實例來調用
System.out.println(weAccess(A.manager)+"同一個類下靜態的實例方法");
/*這里的weAccess方法也在Authorization類下且為靜態,故不需要創建實例來調用,並且可以省略掉類名。
加上Authorization或者實例來調用也可以,最好是加上類名,以便使格式保持一致*/
//這里的大寫的MANAGER這些變量可以看做是實例的屬性,也可以直接作為常量使用,最好是直接作為常量使用
}
public boolean couldAccess(int access) {
if (access == Authorization.MANAGER)
{
return true;
} else
{
return false;
}
}
public static boolean weAccess(int access) {
if (access == Authorization.MANAGER)
{
return true;
} else
{
return false;
}
}
}
另一個類Test:
public class Test {
public boolean canAccess(int access) {
if (access == Authorization.MANAGER)
{
return true;
} else
{
return false;
}
}
public static boolean Access(int access) {
if (access == Authorization.MANAGER)
{
return true;
} else
{
return false;
}
}
}