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



阅读'in Java in Java;目前,布鲁斯·埃克尔(Bruce Eckel)。达到" "关键字点。对我而言,目前尚不清楚"这是如何真正的对象和"的"这个"。工作。布鲁斯·埃克尔(Bruce Eckel)在他的书中说:

如果您有两个类型的对象,称为 a b ,您可能会想知道如何调用方法 Peel()对于这两个对象:

//: 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()的方法"

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

布鲁斯·埃克尔是什么意思?

如果您和我都在有趣的时候笑,您可能会说我们 share

我正在考虑以几乎相同的方式共享类实例。香蕉分享可以剥皮的财产。Banana类指定Banana对象是什么以及它们可以做什么。一些人将该类描述为用于创建对象或用于盖章的橡皮图章的模板。所有的香蕉都可以去皮,但是程序员仍然决定哪些人/他实际上是剥落的,以及何时剥落。用编程术语:Banana类指定每个香蕉都有peel方法,而该方法是什么。

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

类,对象和实例方法在许多地方都以许多方式描述。您可能会看到它是否可以帮助您搜索其他描述来补充Eckel。

最新更新