淺談JAVA中類和物件的理解
我們知道程式語言是一個幫助我們和計算機“對話”的工具,我們可以通過它去讓計算機做一些事。而JAVA語言又是其中的高階語言,那麼什麼是高階?機器語言和人類語言之間有著巨大的鴻溝,人們不斷的想要跨過這個鴻溝,在這個過程中出現了一些“工具”,就是所謂的程式語言。通過這些語言我們也實現了和計算機溝通的能力,但是這些語言依然和自然語言有很大的差別,以至於學習這些語言變得困難,在這個問題上人們也在不斷的改進,努力想創造出離我們的自然語言較為相近的程式語言。那麼在目前為止JAVA語言可以說是相對比較接近自然語言的一種高階語言。在學習JAVA時不妨用自然語言去理解它。
一個JAVA程式是由不同的類組成的,但是程式所直接執行的卻不是類,而是物件,物件是它所對應的類的例項化的一個實體。這個“類”和我們生活中的型別有著相同的理解,其實仔細想想我們的生活也是由很多不同型別的事物組成的。舉一個例子,比如你突然想吃水果了,你和媽媽說給你一個水果,這個時候媽媽是不知道拿給你什麼東西的,你只有說出一個具體的水果名,比如蘋果,媽媽才會給你一個蘋果。在這個例子中水果就相當於類,而蘋果相當於物件,在JAVA中也是這樣的當你想用一個類時,你不能直接呼叫這個類,必須要例項化(就相當於你要說出蘋果這個詞),這個過程就是例項化物件。
類中有三個元素,屬性(一般是靜態的特徵),方法(可以理解為功能),構造器(也叫作構造方法)。
看下面這段程式碼:
public class Fruit { //定義了一個水果類
public Stringname; //定義名字屬性
public double weight; //定義重量屬性
public void f(){ //定義水果功效的方法
System.out.println(name+"有某種功效");
}
public
Fruit f1=new Fruit(); //例項化物件
f1.name="蘋果"; //呼叫名字屬性並賦值
System.out.println("我想要一個"+f1.name);
}
}
下面再來簡單解釋一下例項化物件就是Fruit f1=new Fruit();這句程式碼在記憶體中做了一些什麼事,也就是物件的儲存方式。
首先我們要知道在記憶體中是開闢了兩個空間,一個是棧,還有一個叫堆。
執行這條指令時其實做的事是:
1.定義了一個f1的變數,此時把這個變數放入棧裡; Fruitf1
2.然後new這個關鍵字構造了Fruit的例項,這時把Fruit這個類裡面的屬性,方法存入堆裡。
3.最後還有一個賦值符號“=”,這個等號其實就相當於給力變數f1一個地址(Fruit在堆裡的地址)。這個時候就把類和這個變數f1聯絡到一起了。
注:1.棧裡面存的是地址
2.在java中規定,程式是不能直接訪問堆裡的內容的,必須要通過引用。也就是通過訪問f1,間接訪問Fruit。