方法如何知道要处理的对象?

时间:2019-06-20 18:13:50

标签: java

我不确定我的措词是否正确,但对于方法如何分辨正在处理的对象感到困惑。换句话说,这是您如何指定对特定对象起作用的方法?

例如,如果我创建两个使用某种数组的对象。假设obj1和obj2。如果然后我实现某种add()方法,该方法将向数组添加一些值。如何区分obj1.add(E值)和obj2.add(E值)。

我尝试创建一个数组,但是问题是obj1.add()和obj2.add()将编辑同一数组,并且我希望它们分别工作。在构造函数中,它给数组指定大小。

class Example{
    int arr[];
    Example(int a) {
       int size = a;
       arr = new int[a];
    }

    add(int value) {
       // adds some value to the array
    }

    public static void main(String[] args) {
       Example obj1 = new Example(5);
       Example obj2 = new Example(10);

       obj1.add(1);
       obj2.add(2);
    }
}

是否可以创建可以在其自己的数组上工作的不同对象?我非常困惑,因为add总是会修改arr,并且只有一个数组。

3 个答案:

答案 0 :(得分:0)

所以,这是一个真正的初学者问题,但是我将尽力解释它,因为它一开始就很难引起您的注意。

这样做的时候

   Example obj1 = new Example(5);
   Example obj2 = new Example(10);

您正在PC的RAM中创建两个对象。
它们每个都有一个单独的内存地址,并占用所需的空间。

您可以在RAM中看到对象,就像大街上的房子一样。

   Example Benny = new Example(5);
   Example Jacob = new Example(10);

这条街现在有两所房子。本尼和雅各布。

本尼的门牌号码是105
雅各的门牌号码是42

他们的房屋建造完全一样。唯一的区别是Benny可以接受5位客人,而Jacob可以接受10位客人。

当出租车来添加客人时,他得到命令,将客人添加到105号街道。出租车驶向105号街道,忽略任何非105号房屋,并将该客人添加到该房屋中

然后他返回调度并获得命令,将客人添加到42号街道。然后,他开车前往42号街道,将客人添加到该房屋。

由于地址不同,所以从不混淆将房客添加到哪栋房屋。在此设置中,房屋不共享宾客名额。

我在下面添加了一个diagran,以表明它们具有不同的列表和不同的流程。

schematic describing what happens

我希望这可以帮助您了解其工作原理。

答案 1 :(得分:0)

我想这很容易做到。您可以在两个不同的对象中维护数组,如下所示:

class Example{
    int arr[];
    Example(int a)
    {
       int size = a;
       this.arr= new int[a];
    }

    void add(int value)
    {
       // adds some value to the array
       //your logic to insert values in the array
    }

    public static void main(String args[])
    {
       Example obj1 = new Example(5);
       Example obj2 = new Example(10);

       obj1.add(1);
       obj2.add(2);
       obj1.add(3);
       obj2.add(4);
       for(int i=0;i<obj1.arr.length;i++){ //obj1.arr is used to access the array of that object
         System.out.println(obj1.arr[i]); //just for printing purpose
       }
       for(int j=0;j<obj2.arr.length;j++){
         System.out.println(obj2.arr[j]); //just for printing purpose
       }

    }
}

在上面的代码中,可以对数组(this.arr)使用 this 关键字,以不同方式维护不同对象中的数组。

希望这对您有所帮助。

答案 2 :(得分:0)

`公共类示例{     int arr [];     int currentElementsInArray = 0; //这是数组中当前元素的数量

Example(int a) {
   int size = a;
   arr = new int[a];
}

public void add(int value) {
   // adds some value to the array
   this.arr[this.currentElementsInArray++]= value; /*this will add the incoming element to the next
    vacant position of the array*/
}

public static void main(String[] args) {
   Example obj1 = new Example(5);
   Example obj2 = new Example(10);

   obj1.add(1);
   obj1.add(1);
   obj1.add(5);

   obj2.add(2);
   obj2.add(4);
   obj2.add(22);

   //prints the elements in the first array

   for(int i=0 ; i < obj1.currentElementsInArray ; i++){
   System.out.println(obj1.arr[i]);
   }

   //prints the elements in the second array

    for(int j=0 ; j < obj2.currentElementsInArray ; j++){
   System.out.println(obj2.arr[j]);
   }

}

}`

运行此。将为两个对象分别创建两个数组。