使用object来访问类变量和方法

时间:2012-06-03 13:24:07

标签: java swing

在我发布的问题中,我想知道为了访问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 个答案:

答案 0 :(得分:3)

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

其次,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 naming conventions

答案 1 :(得分:2)

您可能希望在要访问的方法上使用static修饰符。这意味着在其他类中,您可以使用ClassName.methodname(参数)访问该方法。因此,例如,如果您想将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扩展数组。

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分配内存,第二行实际创建并将其放入该内存中,随时可以使用。

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

希望这会有所帮助。

答案 2 :(得分:0)

You have to pass the reference of obj1 to the class beta like:
class beta
{
   alpha a;
   beta(alpha a)
   {
     this.a = a;
   }


}

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

}

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