您可以在网上找到数以百万计的有关面向对象编程的教程,而关于 SO 的回答是一个相当长的话题。我会试着对你的例子说几句话。
考虑一个类,比如变量的“自定义类型”,比如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,它包含对汽车实例的引用。同样,这里发生了很多事情,阅读 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
我们所做的是通过 Carinstance(分配给 myCar变量)的 @ 设置颜色 property 987654338@ 方法,然后使用另一个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 为您提供了一种构建复杂对象并定义允许其余代码对它们执行的操作(方法)的方法(这也称为接口)。对于这样一个小例子,这可能看起来工作量太大,但在复杂的程序中,这是一件非常非常非常好事情
我会在这里停下来,希望这能让您更好地了解什么是类。继续学习,最重要的是,练习和试验。用起来会越来越清楚。