2011-10-19 39 views
0

好吧我有兩個類,第一個名爲第1類和第二個是第2類。 所以我想要做的是發送Class1Class2的參考。要做到這一點,我需要這幾樣代碼:是否存在來自不同類的引用的動態對象類型?

的Class1:

public class Class1 extends Activity { 
    /** Called when the activity is first created. */ 
    public int Var1 = 5; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(new Class2(this)); 
    } 
} 

public class Class2 extends SurfaceView { 
    Class1 Obj1;    //Here! 
    public Class2(Class1 Obj){ //And here I don't want to 
           //Use Class1 as a type. 
           //Is there any Global type? 
     this.Obj1 = Obj; 
    } 
    public void EditVar1(){ 
     Obj.Var1 = 10; 
    } 
} 

採取的Class1的參考:我應該使用對象的類型爲Class1的。我想在多個項目中使用這些代碼:因此,只要主要類名稱不同,我就應該爲每個項目編輯Obj的類型「Class1」。是否有任何全球類型在這裏使用?此外,我試圖使用上下文作爲對象類型與此我無法達到Var1。無論如何,我不知道它是什麼。如果有人能解釋它是什麼,我會感激。謝謝你的迴應!

回答

0

在這種情況下,它們最接近的祖先是java.lang.Object,就像所有Java類一樣。 對於活動,它的父級是上下文,正如您嘗試使用的。如果你想訪問一個Activity有的特定的屬性和方法,那麼它的父類沒有,你必須拋出該對象。例如: -

Class1 obj1; 
public Class2(Activity obj) { 
    this.obj1 = (Class1) obj; 
} 

如果你保持一個參考超,而不是派生類和您指定的派生類對象的超對象,你就失去了衍生的特定屬性。這被稱爲object slicing

+0

所以,這是不可能的我想要的? :「d –

相關問題