0

我有一个名为 out1 的嵌套类的以下代码

 class sample{
    public int a=5;

    class out1{

        void main1(){
            System.out.println("this is out1");
        }

    }

    void call(){
        //access main1() method on class out1 
    }       

}

public class innerclass{
    public static void main(String args[]){
        sample ob=new sample();
        System.out.println(ob.a);// access field a on class sample 

        //access call() on class sample

}   
 }

有谁知道如何访问内部类 out1,是否可以在不使用类示例的 call() 方法的情况下访问这个内部类?

4

4 回答 4

1

您可以将内部类 out1 对象创建为

 ob.new out1();
于 2012-08-05T06:02:52.470 回答
0

您可以通过内部的outer.new 的new 来访问内部类。要从外部类调用内部类方法,您需要创建内部类的对象。否则,您必须使内部类以及方法静态。

class Sample{
public int a=5;

class Out1{

    void main1(){
        System.out.println("this is out1");
    }

}

void call(){
    new Out1().main1();
}       

}

public class Innerclass{
public static void main(String args[]){
    Sample ob=new Sample();
    System.out.println(ob.a);// access field a on class sample
    Sample.Out1 out1=new Sample().new Out1();
    Out1.main1();
    ob.call();
    //access call() on class sample

}   
}

按照惯例,类名应以大写字母开头。

于 2012-08-05T06:38:02.760 回答
0

这是我如何访问内部类的方式。我在类示例中创建了一个 get 方法,它返回类 out1 的对象:

public class innerclass {

public static void main(String args[]) {
    sample ob = new sample();
    ob.getOut1().call(); // calling the call() method in innerclass out1
}
}



class sample {

public int a = 5;

out1 getOut1() {
    return new out1();
}

class out1 {

    public void main1() {
        System.out.println("this is out1");
    }

    public void call() {
        main1();
    }
}
}

并尝试使用大写字母创建类,并使用驼峰式,例如:Sample、InnerClass、Out1。

于 2012-08-05T06:08:55.727 回答
0

内部类可以是静态的。
如果你没有将你的内部类定义为静态的,那么你必须创建它的一个实例(一个对象)才能使用它。

这是静态和成员(非静态)类的示例用例:

public class Tester {

    public static void main() {
        Outer outerTest = new Outer();
        outerTest.test();
        outerTest.publicInnerInstance.sayHello();
        Outer.InnerStaticClass.sayHello();
    }

}

class Outer{

    class InnerMemberClass{
        public void sayHello(){
            System.out.println("Hello");
            System.out.println("I'm an instance of 'InnerMemberClass'.");
        }
    }

    static class InnerStaticClass{
        public static void sayHello(){
            System.out.println("Hello.");
            System.out.println("I'm a static class 'InnerStaticClass'.");
        }
    }

    public InnerMemberClass publicInnerInstance;

    //'Outer' constructor
    public void Outer(){
        publicInnerInstance = new InnerMemberClass();
    }

    public void test(){
        InnerStaticClass.sayHello();
        InnerMemberClass instance = new InnerMemberClass();
        instance.sayHello();
    }
}
于 2012-08-05T06:25:12.790 回答