本文以静态方法和非静态方法进行区分。

一,静态方法调用其他方法

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类里的静态方法的儿子");
    }
}