在我发布的问题中,我想知道为了访问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;
}
答案 0 :(得分:3)
首先,您的代码将抛出NullPointerException
,因为创建给定大小的对象数组并不意味着您正在创建那么多对象。该数组仅保留null
s。
其次,alpha
和beta
类不共享任何方法,setused()
中没有beta
方法。从现在起我假设有:
class beta
{
private String name;
public void setused(int use) { //...
}
}
如果您想使用相同的引用来访问这两个类的方法,最简单的方法是使用polymorphism:
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);
答案 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
}
}
我不确定我是否正确理解您的问题,但也许此代码会有所帮助。