本文以静态方法和非静态方法进行区分。
一,静态方法调用其他方法
1.静态方法调用非静态方法
无论是否在同一个类中,均需要通过对象调用。
Son类:
public class Son {
public void Son2(){//Son类里的非静态方法
System.out.println("Son类里的非静态方法的儿子");
}
}
Test类:
public class Test {
public void Son1(){//非静态方法
System.out.println("同类里的非静态方法的儿子");
}
public static void main(String[] args) {
Test test = new Test();
test.Son1();//静态方法通过对象调用同一个类里的非静态方法
Son son = new Son();
son.Son2();//静态方法通过对象调用另一个类里的非静态方法
}
}
2.静态方法调用静态方法
同一个类内直接调用,不同类直接通过“类名.方法名(参数表)”调用。
Son类:
public class Son {
public static void Son2(){//Son类里的静态方法
System.out.println("Son类里的静态方法的儿子");
}
}
Test类:
public class Test {
public void staic Son1(){//静态方法
System.out.println("同类里的静态方法的儿子");
}
public static void main(String[] args) {
Son1();//静态方法直接调用同一个类里的静态方法
Son.Son2();//静态方法通过调用同一个类里的静态方法
}
}
二,非静态方法调用其他方法
1.非静态方法在同一个类内调用其他方法
在同一个类内,非静态方法可以直接调用静态方法和非静态方法。
Test类:
public class Test {
public void Son1(){//非静态方法
System.out.println("同一个类里的非静态方法的儿子");
}
public static void Son2(){//静态方法
System.out.println("同一个类里的静态方法的儿子");
}
public void run(){
Son1();//非静态方法直接调用同一个类里的非静态方法
Son2();//非静态方法直接调用同一个类里的静态方法
}
public static void main(String[] args) {
Test test = new Test();
test.run();
}
}
2.非静态方法在不同类之间调用其他方法
在不同类之间,非静态方法需要通过对象才能调用非静态方法。可以通过类名调用静态方法。
Test类:
public class Test {
public void run(){
Son son = new Son();
son.Son1();//非静态方法通过对象调用另一个类里的非静态方法
Son.Son2();//非静态方法通过类名调用另一个类里的静态方法
}
public static void main(String[] args) {
Test test = new Test();
test.run();
}
}
Son类:
public class Son {
public void Son1(){//非静态方法
System.out.println("Son类里的非静态方法的儿子");
}
public static void Son2(){//静态方法
System.out.println("Son类里的静态方法的儿子");
}
}