Java如何访问类中的类

时间:2012-08-29 04:46:16

标签: java class

这基本上就是我所拥有的:

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

以下是我将访问Shuffle的课程:

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()吗?

5 个答案:

答案 0 :(得分:3)

现在采用嵌套类的 2 类型:

1。 Inner Classes(非静态)

2。 Top Level Classes(静态)

- Inner Clas s(非静态)具有隐含引用 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(静态)就像外类中的单独的类一样。 Top-level需要创建外部类的对象才能访问其非静态成员,但可以访问外部的Static methods and Static variables直接上课。

<强>例如

public class Outer{


         class Inner{


         }

     }


    public class Test{


       public static void main(String[] args){


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

        }
    } 

答案 1 :(得分:1)

您无法直接从外部类访问Inner类方法和字段。但是,您可以在内部类中访问外部类方法。

要访问内部类,您需要创建内部类的对象,而不仅仅是可以访问内部类字段。有关更多说明,请参阅嵌套类:

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

答案 2 :(得分:1)

您正在谈论嵌套类,请尝试阅读本文。也许它可以提供帮助。

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

答案 3 :(得分: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();

答案 4 :(得分: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();