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

これが、内部クラスにアクセスする方法です。クラスout1のオブジェクトを返すクラスサンプルでgetメソッドを作成しました。

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 に答える
0

インナークラスには、newofouter.newofinnerでアクセスできます。外部クラスから内部クラスメソッドを呼び出すには、内部クラスのオブジェクトを作成する必要があります。それ以外の場合は、内部クラスとメソッドを静的にする必要があります。

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 に答える