【问题标题】:Java Syntax confusion, calling a variables method?Java语法混乱,调用变量方法?
【发布时间】:2014-09-17 20:51:35
【问题描述】:

我有一个类Ball,其中有一个变量velocity,它是一个Vector,声明为:

private Vector velocity;

现在在类的其他地方,有一个名为bounce的函数,声明为:

public void bounce(float surfaceTangent) {
    velocity = velocity.bounce(surfaceTangent);
}

我不明白分配velocity 的那一行在做什么,我不熟悉它的语法。看起来它调用velocity 的bounce 函数,但velocity 是一个变量,而不是一个类。它根本没有任何功能……这到底是做什么的?

【问题讨论】:

  • Java 中除了所谓的原语(booleanintfloat 等)外,每个对象(变量的值)都是一个实例 某类的。
  • 这确实很奇怪,因为Vector 没有bounce() 方法。我希望Ball 有一个bounce() 方法。
  • @PM77-1 它可能不是 List Vector,而是一个存储物理运动矢量(即方向和速度)的类。 @bock.steve velocity 是一个类的实例。很多时候,您可能不得不将一个对象重新分配给另一个对象,甚至根据自身更改一个对象。例如,myString = myString.trim(); 修剪 myString 中的所有空白并将其存储回 myString。

标签: java class variables methods


【解决方案1】:

Velocity 是类 Vector 的一个实例(这里的名称令人困惑,因为大多数人会将该类型名称与 java.util.Vector 相关联),它具有属于 Vector 的每个实例的实例方法和实例变量。 Bounce 在这里看起来像一个实例方法。在面向对象编程中,您通常通过对象(实例)的方法与对象(实例)进行交互。

但速度是一个变量,而不是一个类。它根本没有任何功能......

在 Java 中,类确实有自己的类方法(和类变量),它们由 static 的方法修饰符表示。

【讨论】:

  • 你是说bounce()ava.util.Vector<E>的现有方法吗?
  • @PM77-1 不。在他的代码示例中没有任何内容表明他的 Vector 类是 java.util.Vector,并且看到他如何修改我们假设在这里有效的现有代码,这里的 Vector 显然是不是 java.util.Vector。
  • 如果您正在编写代码来模拟物理对象的运动,这个名字的选择还不错,但如果示例以 import mumble.physics.Vector; 开头,它可能会节省我五秒钟左右的思考时间/跨度>
  • 是的,就是这样,我查看了其余的代码并深埋在某个角落,有一个新的 Vector 类,带有一个反弹方法。所以是的,它在 Vector 类中调用了一个反弹方法!
  • @bock.steve 如果您使用的是 IDE,您可以按住 ctrl 并单击类型名称直接进入 Vector 的声明。
【解决方案2】:

您声明了一个名为 velocity 的变量,您正在为其分配由在速度实例上调用的方法 bounce(float) 返回的值。

【讨论】:

    猜你喜欢
    • 2015-12-12
    • 2013-08-13
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2017-06-11
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多