[英]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.