2016-12-16 25 views
-2

我很难很好地理解类和对象。我一直在寻找阅读或观看新视频,以防有人更好地解释。我怎样才能更好地理解java类和对象?

例如,我想建一辆汽车。所以我做了一个班(蓝图)车。

public class Car{ 



} 

我的车想成为宝马,所以我需要创建的下一个东西是一个对象?

Car bmw = new Car(); 

我明白了(也许)有很多种类的汽车,所以我需要一个一流的汽车,后来我将创建不同类型汽车的新对象?宝马,法拉利等。

但我不明白一个类的实例的含义?这是什么意思?这条线发生了什么?

Car bmw = new Car(); 

不同类型的汽车如何具有不同的属性? 方法(行动),将是相同的,像,驱动器,停止,转向。

而关于构造函数,当我创建构造函数时,这个构造函数是否与所有创建的对象相同?

+0

阅读有关继承。如果你想'bmw'拥有新的属性,可以创建一个新的'Bmw'类...'BMW class extends Car {}' – flakes

+0

也许[this](https://www3.ntu.edu.sg/home/ehchua /programming/java/J3a_OOPBasics.html)可以帮助你更好地理解OOP。 – Blobonat

回答

0

你可以在网上找到关于面向对象编程的数以百万计的教程,这是一个很长的话题,需要在SO上得到解答。我只是试着对你的例子说几句话。

想想你的变量就像一种“自定义类型”的类,比如intdouble。你可以通过编写类定义来定义汽车是什么(“蓝图”,就像你所说的那样)。 这个定义将保持基本两件事情:

  • 汽车性质,如颜色,座位数等
  • 汽车方法,这是基本的功能是“活”与任何汽车及汽车的每isntance操作

在您的例子,这是汽车定义

public class Car { 

} 

由此您只定义了“类型”Car,它没有任何属性和方法。为了举例,我们来添加一些东西:

public class Car { 
    private String color; 

    public String getColor() { 
     return color; 
    } 

    public void setColor(String color) { 
     this.color = color; 
    } 
} 

这显然非常简单。我不会浏览我在这里使用的关键字publicprivate。对于了解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为您提供了一种方法来构建复杂对象并定义其余代码允许用它们执行的操作(方法)(这也称为接口)。对于这样一个小例子,这可能看起来太多了,但在复杂的程序中,这是非常非常好的做法。

我会在这里停下来,希望这能让你更好地了解一个类是什么。继续学习,最重要的是练习和实验。当你使用它时会越来越清楚。