簡體   English   中英

Java如何訪問一個類中的一個類

[英]Java how to access a class within a 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()?

現在采用嵌套類的2種類型:

1. Inner Classes (非靜態)

2. Top Level Classes (靜態)

- 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 (靜態)就像外部類中的單獨類一樣。 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();

        }
    } 

您不能直接從外部類訪問內部類的方法和字段。 但是,您可以在內部類內部訪問外部類方法。

要訪問內部類,您需要創建一個內部類對象,而不是僅您可以訪問內部類字段。 有關更多說明,請參見嵌套類:

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

您正在談論嵌套類,請嘗試同時閱讀本文。 也許可以幫上忙。

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

嵌套類僅應存在於服務器外部類。 您不應將內部類暴露給外界。

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();
   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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM