我很难更好地理解课程和对象。我一直在寻找阅读或观看新视频,万一有人解释得更好。
例如,我想建造一辆汽车。所以我制造了一辆(蓝图)汽车。
public class Car{
}
我的车想要成为一辆宝马,所以我需要创造的下一件事是一个物体?
Car bmw = new Car();
我理解(也许)有很多种车,所以我需要一辆车,后来我会用不同种类的车创造新物品?宝马,法拉利等。
但我不理解课堂实例的含义?这是什么意思?这条线会发生什么?
Car bmw = new Car();
不同类型的汽车如何具有不同的属性? 方法(动作)将是相同的,例如,开车,停车,转弯。
关于构造函数,当我创建构造函数时,这个构造函数是否与创建的所有对象相同?
答案 0 :(得分:0)
你可以在网上找到数以百万计的关于面向对象编程的教程,这是一个很长的话题,需要在SO上回答。我会试着就你的例子说几句话。
想想一个类似于#34;自定义类型的类#34;对于您的变量,例如int
或double
。您可以通过编写类定义来定义汽车的内容("蓝图",就像您所说的那样)。
这个定义基本上包含两件事:
在您的示例中,这是汽车定义:
public class Car {
}
通过这个你刚刚定义了"类型" Car
,它没有任何属性或方法。为了示例,我们添加一些内容:
public class Car {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
这显然非常简单。我不会查看我在此处使用的关键字public
和private
。关于encapsulation的阅读(无论如何这是OOP的一个重要方面)
现在我们有一辆Car"类型"它具有color
属性和getColor()
方法。请注意,getColor()
是一个可以访问Car属性的函数。
一旦你定义课程,你仍然没有真正的汽车"对象"代码中的(或变量)。与任何其他类型一样,您必须在代码中创建一些汽车实例并将该实例分配给变量以使用您刚刚给出的定义。
您可以使用new
运算符执行此操作。在您的示例中,行
Car myCar = new Car();
创建一个新变量myCar
,其中包含对Car 实例的引用。再一次,这里有很多内容,请阅读Java中的OOP以了解构造函数。如果您对C / C ++有所了解,也许您可以阅读有关指针,引用和动态内存的信息,但是请稍后将其保留下来。
上面这行不会进入课程定义(不管怎样),它将成为你主要功能的一部分。
现在你可以做这样的事情(仍然在你的主要部分):
myCar.setColor("Red");
String color = myCar.getColor();
System.out.println("the color of my car is: " + color);
// the output on the console will be:
// the color of my car is: Red
我们所做的是设置Car
实例的颜色属性(分配给myCar
变量 )通过其setColor()
方法,并使用其他getColor()
方法将其检索回来。
要了解实例的重要性,请尝试以下方法:
Car myCar1 = new Car();
Car myCar2 = new Car();
myCar1.setColor("Red");
myCar2.setColor("White");
System.out.println("color of the car 1: " + myCar1.getColor());
System.out.println("color of the car 2: " + myCar2.getColor());
输出将是:
color of the car 1: Red
color of the car 2: White
这强调了您创建了Car
"类型"的2个不同实例的事实。 相同的属性和方法(从这里"蓝图"术语),但两个实例"生活"彼此独立。
最后,class
为您提供了构建复杂对象的方法,并定义了允许其余代码对其执行的操作(方法)(这也称为接口)。对于这样一个小例子来说,这看起来似乎太多了,但在复杂的程序中,这是一个非常非常非常好的事情
我会在这里停下来,希望这能让你更好地了解一堂课是什么。继续学习,最重要的是,练习和实验。使用它时会越来越清晰。