1

これが基本的に私が持っているものです:

public class Game extends Activity{
    public class Work{
        public class Shuffle{
            *Class I need to access*
        }
    }
}

これが私がシャッフルにアクセスするクラスです:

public class Deck extends Game {
    public int shuffle() {
        //WHAT DO I NEED TO DECLARE HERE IN ORDER TO ACCESS Shuffle.getShuffle()?
        int[] shuffDeck = (MY SHUFFLE CLASS).getShuffle();
        int x = shuffDeck[i];
        String y = String.valueOf(x);
        i += 1;

        return x;
    }
}

DeckクラスでShuffle.getShuffle()にアクセスできるようにするには、何を宣言する必要がありますか?

4

5 に答える 5

6

現在、 2つのタイプのネストされたクラスを取得しています:

1. Inner Classes(非静的)

2. Top Level Classes(静的)

--s Inner Clas(非静的)には、その(囲んでいるクラス)への暗黙の参照があります。 外部から内部クラスにアクセスするには、外部クラスオブジェクトを使用してOuter Class内部クラスにアクセスする必要があります。

例えば:

 public class Outer{


     class Inner{


     }

 }


public class Test{


   public static void main(String[] args){

         Outer o = new Outer();
         Outer.Inner i = o.new Inner();

    }
} 

-(静的)は、外部クラス の別のクラスTop-Level Classのようなものです。クラスは、非静的メンバーにアクセスするためにOuterクラスのオブジェクトを作成する必要がありますが、Outerクラスのに直接アクセスできますTop-levelStatic methods and Static variables

例えば:

public class Outer{


         class Inner{


         }

     }


    public class Test{


       public static void main(String[] args){


             Outer.Inner i = new Outer.Inner();

        }
    } 
于 2012-08-29T05:12:52.720 に答える
1

外部クラスから内部クラスのメソッドとフィールドに直接アクセスすることはできません。ただし、内部クラス内の外部クラスメソッドにアクセスできます。

内部クラスにアクセスするには、内部クラスのフィールドにアクセスできるのは自分だけではなく、内部クラスのオブジェクトを作成する必要があります。詳細については、ネストされたクラスを参照してください。

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

于 2012-08-29T04:50:04.530 に答える
1

ネストされたクラスについて話しているので、この記事も読んでみてください。多分それは助けることができます。

http://en.wikibooks.org/wiki/Java_Programming/Nested_Classes

于 2012-08-29T05:03:17.710 に答える
1

ネストされたクラスは、サーバーの外部クラスにのみ存在する必要があります。内部クラスを外部に公開しないでください。

public class Game extends Activity{


public static class Shuffle
        {
            // provide shuffle method here which will use internal implementation of
            // shuffle.
        }

int[] shuffle()
    {
        // call inner class method from here. Also declare inner class as
        // static since I guess your inner class does not require instance
        // of outer class.
       return null;
    }

shuffle()そして、ゲームのオブジェクトを使用したゲームのアクセス方法

   int[] shuffDeck = (Game object).getShuffle();
于 2012-08-29T05:03:44.340 に答える
1
   public class Outer{
        class Inner{

       }
    }

    Outer.Inner art = (new Outer()).new Inner();

import android.content.Context;
import android.widget.Toast;

public class Outer{
    private Context context;
    public Outer(Context con) {
        context = con;
        String text = "Hello, I'm dbManager.";
        int duration = Toast.LENGTH_SHORT;
        Toast.makeText(context, text, duration ).show();
    }

    public class Inner{
        public Inner() {
            String text = "Hello, I'm «Art dbManager».";
            int duration = Toast.LENGTH_SHORT;
            Toast.makeText(context, text, duration ).show();
        }
    }
}

    Outer.Inner art = (new Outer(this)).new Inner();
于 2014-12-23T06:39:38.553 に答える