直观的理解

时间:2015-07-06 17:23:11

标签: java

在此页面上:https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

  

一个类包含被调用以从中创建对象的构造函数   班级蓝图。构造函数声明看起来像方法   声明 - 除了他们使用类的名称而没有   返回类型。例如,Bicycle有一个构造函数:

public Bicycle(int startCadence, int startSpeed, int startGear) {
    gear = startGear;
    cadence = startCadence;
    speed = startSpeed;
}
     

要创建一个名为myBike的新Bicycle对象,构造函数是   由新运营商召集:

Bicycle myBike = new Bicycle(30, 0, 8);
     

new Bicycle(30, 0, 8)在内存中为对象创建空间   初始化其字段。"

所以我在那之前和那之前完成了JS,声明一个新对象就像var newObject = new Bicycle(params);

但是,我在此注意到的是,当您创建新对象时,您说Bicycle myBike = new Bicycle(params);

为什么单词Bicycle使用了两次?这有什么作用?

5 个答案:

答案 0 :(得分:3)

Bicycle myBike = new Bicycle(30, 0, 8);

在一个陈述中发生了两件主要的事情:

1

Bicycle myBike;

这是变量声明,其中指定了变量名称和类型。

2

myBike = new Bicycle(30, 0, 8);

这是变量初始化,其中赋值。

答案 1 :(得分:2)

在JS中,每个变量都被称为var类型。它的通用类型,但在java中,每个对象都有一个类似Bicycle的类型。所以它基本上取决于语言所遵循的语法。

Bicycle myBike = new Bicycle(30, 0, 8);中的

Bicycle myBike声明了myBike类型&的引用变量Bicyclenew Bicycle(30, 0, 8);创建了一个Bicycle的新实例,其初始值为30,0,8=将此实例分配给myBike变量。

答案 2 :(得分:1)

第一部分(在=定义对象引用之前,第二部分(在=之后)构造一个新对象。{ {1}}执行分配

答案 3 :(得分:1)

Java倾向于明确声明对象的用途。例如,当您创建一个整数时,如果使用 int ,则为前缀。以类似的方式,Java编译器想要知道您正在创建的对象是什么。因此,我们必须告诉它它将成为一个特定的类。所有Java变量(据我所知)都遵循相同的模式。这是语言的设计方式。其他语言通常使用类似的结构,或者有 var 变量的空间。

单词Bicycle的第一个实例声明了您正在使用的变量类型。第二个用于创建自行车类型的新对象。第二次使用该单词与调用方法相同。

虽然我同意,但在这种情况下似乎有点多余。我认为它是因为Java的面向对象性质,我们需要限制它。 (例如,你可能会遇到对象从其他对象继承的有趣情况)。

答案 4 :(得分:1)

还有另外一种方法可以解释为" Head First Java"您可能会发现更直观一点(这对我来说更有意义)

接受声明 Bicycle myBike = new Bicycle(params);

并将其分解为:

Bicycle myBike;
myBike = new Bicycle(params);

现在将myBike想象为遥控器,将Bicycle(params)想象为遥控器控制的对象。

所以这两行说:

第一行:

Make a remote called myBike that will control an object of type Bicycle

然后第二行说:The specific Bicycle that myBike will control is a new Bicycle with these parameters.

我认为这是一个更直观的解释。

你呈现它的方式,它只是将这些语句分成一行(以节省一些空间)。

所以在等号左边你告诉编译器创建一个名为myBike的变量,该变量只能链接到Bicycle类型的对象,并且等号正好告诉你您将此引用Bicycle链接到:在这种情况下,new Bicycle(params)