[英]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
。
其次,您的alpha
和beta
类不共享任何方法, 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.