0

在我发布的问题中,我想知道为了访问该setused()方法,我obj1为类创建了一个名为数组类型的对象alpha。但是如果我想从类 beta 访问相同的方法,那么我将不得不创建另一个对象。但是有什么方法可以让我使用相同的对象,即。obj1访问setused()方法的数组类型

import javax.swing.JOptionPane;
public class first()
{
      public void main(String args[])
     {
         alpha[] obj1=new alpha[5];
         for(int i-0;i<5;i++)
         obj1[i].setused(int 1);
     }
}

class alpha
{
   private int un_used=5;
   private int used=0

   public int getun_used()
   {
          return un_used;
   }

   public int getused()
   {
          return used; 
   }

   public void setused(int use)
   {
          used= use;
   }
}

class beta
{
    private String name;
}
4

4 回答 4

3

首先,您的代码将抛出NullPointerException,因为创建给定大小的对象数组并不意味着您正在创建那么多对象。该数组仅包含nulls。

其次,你alphabeta类不共享任何方法,setused()beta. 从现在开始我假设有:

class beta
{
    private String name;

    public void setused(int use) { //...
    }

}

如果您想使用相同的引用来访问两个类的该方法,最简洁的方法是使用

interface Used {

    void setused(int use);

}

abstract基类也可以。然后实现该接口:

class alpha implements Used { //...
class beta implements Used { //...

现在创建一个类型数组Used

 Used[] obj1=new Used[5];
 obj1[0] = new alpha();
 obj1[1] = new beta();
 //...
 for(int i-0;i<5;i++)
 obj1[i].setused(1);

最后阅读Java 命名约定

于 2012-06-03T13:31:42.683 回答
2

您可能希望在要访问的方法上使用 static 修饰符。这意味着在其他类中,您可以使用 ClassName.methodname(parameters) 访问该方法。因此,例如,如果您想将 setused 设置为静态方法,那么您将首先通过 alpha.setUsed 访问它:

public static void setUsed(int use) {
    used=use;
}

public class first {

    public void main(String args[]) {
        alpha.setUsed();
    }
}

如果您想了解更多关于静态和其他主题的信息,请前往 Java 教程 ( http://docs.oracle.com/javase/tutorial/ ),他们非常擅长解释这一切。

您还初始化了 5 个对象,而不是 1 个。要让 alpha 类表现得像一个数组,您需要让 alpha extend Array。

public alpha extends Array {}

这将允许类通过继承使用 Array 的所有方法。请注意,继承的另一个词是多态性,上面已经提到过。

此外,既然您已经初始化了数组中的对象,就必须实例化它们。

public void main(String args[]) {

    alpha[] obj1=new alpha[5];
    for(int i-0;i<5;i++) {
        obj[i] = new alpha();
        obj1[i].setused(1);
    }
 }

必须初始化对象(给定内存空间)然后实例化(用实际对象填充内存空间)。

请注意通常如何调用对象:

alpha a = new alpha();

那是一行的初始化和实例化,这里是两行:

alpha a;
a = new alpha();

第一行为 a 分配内存,第二行实际创建 a 并将其放入该内存中,以供使用。

您只初始化了对象数组,因此当您尝试使用它们时会出现 NullPointerException。

希望这有帮助。

于 2012-06-03T13:53:05.050 回答
0
You have to pass the reference of obj1 to the class beta like:
class beta
{
   alpha a;
   beta(alpha a)
   {
     this.a = a;
   }


}
于 2012-06-03T13:31:53.017 回答
0
  class beta{
private String name;
private alpha[] alphaArray ;

public void setAlpha(alpha[] alphaArray){
  this.aplhoaArray = alphaArray.clone();
}

public void someMethod(){
  // access alpha[index].setUsed() method here 
}

}

不确定我是否正确理解了您的问题,但也许这段代码会有所帮助。

于 2012-06-03T13:33:14.350 回答