你可以在网上找到关于面向对象编程的数以百万计的教程,这是一个很长的话题,需要在SO上得到解答。我只是试着对你的例子说几句话。
想想你的变量就像一种“自定义类型”的类,比如int
或double
。你可以通过编写类定义来定义汽车是什么(“蓝图”,就像你所说的那样)。 这个定义将保持基本两件事情:
- 汽车性质,如颜色,座位数等
- 汽车方法,这是基本的功能是“活”与任何汽车及汽车的每isntance操作
在您的例子,这是汽车定义:
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的一个重要方面是这样)
现在我们有车“类型”具有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
我们原来设定的颜色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
这种压力,你创建的事实2个的Car
“类型”的不同实例有相同的属性和方法(从这里的“蓝图”术语),但两个实例“生活”彼此独立。
最后,一个class
为您提供了一种方法来构建复杂对象并定义其余代码允许用它们执行的操作(方法)(这也称为接口)。对于这样一个小例子,这可能看起来太多了,但在复杂的程序中,这是非常非常好的做法。
我会在这里停下来,希望这能让你更好地了解一个类是什么。继续学习,最重要的是练习和实验。当你使用它时会越来越清楚。
阅读有关继承。如果你想'bmw'拥有新的属性,可以创建一个新的'Bmw'类...'BMW class extends Car {}' – flakes
也许[this](https://www3.ntu.edu.sg/home/ehchua /programming/java/J3a_OOPBasics.html)可以帮助你更好地理解OOP。 – Blobonat