JAVA中方法的调用【基础】
分两种情况:
1.方法调用发生在本类(即同类)中
--1.1当被调用的方法被static修饰为静态方法(static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。)
此时该静态方法可以直接在其他的本类方法中调用。
eg:
public class HelloWord {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="HelloWord!";
int a=0;
int b=a+1;
int result=0;
for(int i=0;i<20;i++)
{
//Add方法调用
result= Add(a,b); //此处的参数a,b为实参。
System.out.println(str+" "+ result);
a+=i;
}
}
/**
* 被调用方法,这里使用了static声明为静态方法
* @param x
* @param y
* @return
*/
//Add方法的定义,x,y均为方法定义时传入的形参。
private static int Add(int x,int y)
{
return x+y;
}
}
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
--1.2当被调用的方法没有被static修饰时,该方法为非静态的。
此时该非静态方法需要通过类的实例化来调用。
public class HelloWord {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="HelloWord!";
int a=0;
int b=a+1;
int result=0;
for(int i=0;i<20;i++)
{
//Add方法调用
//类的实例化
HelloWord helloword=new HelloWord();
//通过实例化的类进行Add方法调用
result=helloword.Add(a, b);
System.out.println(str+" "+ result);
a+=i;
}
}
/**
* 被调用方法,没被static修饰,不是静态方法。调用时需要通过类的实例化进行调用
* @param x
* @param y
* @return
*/
private int Add(int x,int y)
{
return x+y;
}
}
2.方法调用发生在不同类中。
此无论被调用的方法是否有被static修饰为静态方法,都要通过类的实例化才能调用。
eg:
外部类:
public class Test {
/**
* 被调用方法Add
* @param x
* @param y
* @return
*/
public int Add(int x,int y)
{
return x+y;
}
/**
* 被调用方法Sub
* @param x
* @param y
* @return
*/
public static int Sub(int x,int y)
{
return x-y;
}
}
方法调用:
public class HelloWord {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="HelloWord!";
int a=5;
int b=a+1;
int result=0;
for(int i=0;i<20;i++)
{
//Add方法调用
//类的实例化
Test test=new Test();
//通过实例化的类进行Add方法调用
result=test.Add(a, b);
System.out.println(str+" "+ result);
result=test.Sub(b, 1);
System.out.println(str+" "+ result);
a+=i;
}
}
}