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

}

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM