Java中的静态方法和实例方法的调用的理解(不同的类下的方法调用)

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;
} }

}

上一篇:JVM核心之JVM运行和类加载全过程


下一篇:Java基础知识强化12:Java中运用数组的四种排序方法