繁体   English   中英

使用对象访问类变量和方法

[英]use of object to access the class variables and methods

在我要发布的问题中,我想知道,为了访问setused()方法,我为类alpha创建了一个名为obj1的数组类型的对象。 但是,如果我想从类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;
}

首先,您的代码将引发NullPointerException因为创建给定大小的对象数组并不意味着您要创建那么多对象。 该数组仅包含null

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

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命名约定的信息

您可能想在要访问的方法上使用static修饰符。 这意味着在其他类中,您可以使用ClassName.methodname(parameters)访问该方法。 因此,例如,如果您希望设置为静态方法,则可以首先通过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扩展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。

希望这会有所帮助。

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


}
  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 
}

}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM