你可以在網上找到關於面向對象編程的數以百萬計的教程,這是一個很長的話題,需要在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