类之间的方法如何在对象之间共享?

时间:2019-02-17 09:02:52

标签: java this

此刻正在阅读Bruce Eckel的“ Java中的思想” 。已达到“ ”关键字点。对我来说,尚不清楚对象和“此”对象如何真正起作用。布鲁斯·埃克尔(Bruce Eckel)在书中说:

  

如果有两个相同类型的对象分别称为 a b ,您可能想知道如何调用方法 peel()< / strong>这两个对象:

//: initialization/BananaPeel.java
class Banana { void peel(int i) { /* ... */ } }  

public class BananaPeel {
    public static void main(String[] args) {
        Banana a = new Banana(),
        b = new Banana();
        a.peel(1);
        b.peel(2);
    }
} ///:~
     

如果只有一个称为 peel()的方法,该方法如何知道是为对象 a 还是 b 调用?

     

为使您可以使用方便的面向对象语法编写代码,在该语法中“向对象发送消息”,编译器将为您做一些秘密工作。方法 peel()中传递了一个秘密的第一个参数,该参数是对要操作的对象的引用。因此,这两个方法调用变为:

Banana.peel(a, 1);  
Banana.peel(b, 2); 

因此,当我们创建对象时,它具有从类复制的自己的方法。

A obj = new A();
obj.callMethod();  //<-- object uses it's own method, not the class, right?

根据这本书,类的方法以某种方式在所有人之间共享 从此类创建的对象。

此机制如何作用于结果?

我没有得到这一部分: 如果有两个相同类型的对象分别称为 a b ,您可能想知道如何调用方法 peel()对于这两个对象。 如果只有一个名为 peel()的方法,该方法如何知道是为对象 a 还是 b 调用? >

“仅一种称为 peel()的方法”是什么意思

我们具有为每个对象创建的类中的所有方法。因此,我们只从对象调用该方法。

布鲁斯·埃克尔(Bruce Eckel)是什么意思?

1 个答案:

答案 0 :(得分:1)

如果您和我俩都在有趣的事情时笑,您可能会说我们分享笑的能力。

我正在考虑以相同的方式在类实例之间共享方法。香蕉具有可剥皮的特性。 Banana类指定什么Banana对象以及它们可以做什么。有些人将此类描述为用于创建对象的模板或用于对其进行冲压的橡皮图章。所有的香蕉都可以去皮,但是程序员仍然可以决定实际去皮的香蕉以及何时去皮。用编程术语来说:Banana类指定每个香蕉都有一个peel方法,以及该方法是什么。

埃克尔(Eckel)做a.peel(1);时,他指定他要剥香蕉a(而不是香蕉b)。就我而言,作为面向对象的程序员,这一切你都需要知道使用香蕉及其方法。

类,对象和实例方法在很多地方都有很多描述。您可能会发现它是否可以帮助您搜索其他描述以补充Eckel的描述。