如何从外部类下的其他子类调用子类

时间:2013-06-26 14:29:47

标签: java

class Test {
    void method2() {
        System.out.println("This is outer class method");
    }


    static class M2 {
        void method1() {
            System.out.println("This is method1 in class m2");
        }
    }


    public static void main(String[] args){
        //test a=new test();
        //a.method2();
    }
}

我想从主类调用类M2中的method1。还有方法1中的method2。

4 个答案:

答案 0 :(得分:2)

从method2调用method1很简单:

new M2().method1();

因为静态内部类几乎是常规类。

但是,由于内部类是静态的,它不对应外部类的任何实例,并且因为method2不是静态的,所以必须在实例上调用,所以没有直接调用该方法的方法,你仍然需要外部类的实例来调用方法:

new Test().method2();

答案 1 :(得分:2)

要从 method1 调用 method2 ,您必须创建一个Test类的实例,因为您处于 static method1 中的上下文。

new Test().method2();

<小时/> 并从 main 调用 method1

new Test.M2().method1();

由于M2是一个嵌套类,因此可以直接在外部类名 - Test 上访问它。如果它是一个内部类,你必须创建一个Test的实例来访问它:

new Test().new M2().method1();

答案 2 :(得分:1)

这对你有用

public class Test{
void method2(){
    System.out.println("This is outer class method");
}

static class M2{
    void method1(){
        System.out.println("This is method1 in class m2");
    }
}

public static void main(String[] args){       
    M2 m2=new M2();
    m2.method1();
}

}

答案 3 :(得分:0)

像往常一样,为了调用非静态方法,您需要一个实例来调用它。要么使方法静态,要么创建类的实例。以下是有关如何获取代码working的一个选项:

import java.util.*;
import java.lang.*;

class main{
    static void method2(){
        System.out.println("This is outer class method");
    }

    static class M2{
        static void method1(){
            System.out.println("This is method1 in class m2");
            method2();
        }
    }

    public static void main(String[] args){
        M2.method1();
        //test a=new test();
        //a.method2();
    }
}