學Java入門篇: Java類的基本內容
import語句
為了能夠使用某一個包的成員,我們需要在 Java 程式中明確匯入該包。使用“import”語句可完成此功能。在 java 原始檔中 import 語句應位於 package 語句之後,所有類的定義之前,可以沒有,也可以有多條,其語法格式為:
import package1[.package2…].(classname|*);
java 執行時環境將到 CLASSPATH + package1.[package2…]路徑下尋找並載入相應的位元組碼檔案 classname.class。“*”號為萬用字元,代表所有的類。也就是說 import 語句為編譯器指明瞭尋找類的途徑。
例,使用 import 語句引入類程式:TestPackage.java
import p1.Test;
//或者 import p1.*;
public class TestPackage {
public static void main(String args[]) {
Test t = new Test; // Test 類在 p1 包中定義
t.display;
}
}
java編譯器預設為所有的java 程式引入了JDK的java.lang 包中所有的類(importjava.lang.*;),其中定義了一些常用類:System、String、Object、Math 等。因此我們可以直 接使用這些類而不必顯式引入。但使用其它非無名包中的類則必須先引入、後使用。
小編是一個有著5年工作經驗的java程式設計師,對於java,自己有做資料的整合,一個完整學習java的路線,學習資料和工具,相信這裡有很多學習java的小夥伴,我創立了一個2000人學習扣群,479121291。每晚都有java的直播課程。無論是初級還是進階的小夥伴小編我都歡迎!
Java 類搜尋方式
程式中的 import 語句標明要引入 p1 包中的 Test 類,假定環境變數 CLASSPATH 的值為“.;C:\jdk6\lib;D:\ex”,java 執行環境將依次到下述可能的位置尋找並載入該位元組碼檔案 Test.class:
.\p1\Test.class
C:\jdk6\lib\p1\Test.class
D:\ex\p1\Test.class
“.”代表當前路徑,如果在第一個路徑下就找到了所需的類檔案,則停止搜尋。否則依次搜尋後續路徑,如果在所有的路徑中都未找到所需的類檔案,則編譯或執行出錯。
3、訪問修飾符
Java 語言允許對類中定義的各種屬性和方法進行訪問控制,即規定不同的保護等級來限制對它們的使用。為什麼要這樣做?Java語言引入類似訪問控制機制的目的在於實現資訊的封裝和隱藏。Java 語言為對類中的屬性和方法進行有效地訪問控制,將它們分為四個等級:private、無修飾符、protected、public。
變數和方法可以使用四個訪問級別中的任意一個修飾,類可以使用公共或無修飾級別修飾。
變數、方法或類有預設(無修飾符)訪問性,如果它沒有顯式受保護修飾符作為它的宣告的一部分的話。這種訪問性意味著,訪問可以來自任何方法,當然這些方法只能在作為物件的同一個包中的成員類當中。
以修飾符 protected 標記的變數或方法實際上比以預設訪問控制標記的更易訪問。一個protected 方法或變數可以從同一個包中的類當中的任何方法進行訪問,也可以是從任何子類中的任何方法進行訪問。當它適合於一個類的子類但不是不相關的類時,就可以使用這種受保護訪問來訪問成員。
類定義
Java程式的基本單位是類,你建立類之後,就可用它來建立許多你需要的物件。Java把每一個可執行的成分都變成類。
類的定義形式如下:
[一般修飾符] class [extends 父類][implements 介面]{
[]
[]
[]
}
這裡,類名要是合法的識別符號。在類定義的開始與結束處必須使用花括號。你也許想建立一個矩形類,那麼可以用如下程式碼:
public class Rectangle{
......//矩形具體的屬性和方法
}
構造方法
類有一個特殊的成員方法叫作構造方法,它的作用是建立物件並初始化成員變數。在建立物件時,會自動呼叫類的構造方法。
構造方法定義規則
Java 中的構造方法必須與該類具有相同的名字,並且沒有方法的返回型別(包括沒有void)。另外,構造方法一般都應用 public 型別來說明,這樣才能在程式任意的位置建立類的例項--物件。
示例
下面是一個 Rectangle 類的構造方法,它帶有兩個引數,分別表示矩形的長和寬:
public class Rectangle {
public Rectangle(int w, int h) {
width = w;
height = h;
}
public Rectangle {
}
}
每個類至少有一個構造方法。如果不寫一個構造方法,Java 程式語言將提供一個預設的, 該構造方法沒有引數,而且方法體為空。
注意:如果一個類中已經定義了構造方法則系統不再提供預設的構造方法。
析構方法
當垃圾回收器將要釋放無用物件的記憶體時,先呼叫該物件的finalize方法。如果在程式終止前垃圾回收器始終沒有執行垃圾回收操作,那麼垃圾回收器將始終不會呼叫無用物件的finalize方法。在Java的Object基類中提供了protected型別的finalize方法,因此任何Java類都可以覆蓋finalize方法,通常,在析構方法中進行釋放物件佔用的相關資源的操作。
Java 虛擬機器的垃圾回收操作對程式完全是透明的,因此程式無法預料某個無用物件的finalize方法何時被呼叫。如果一個程式只佔用少量記憶體,沒有造成嚴重的記憶體需求,垃圾回收器可能沒有釋放那些無用物件佔用的記憶體,因此這些物件的finalize方法還沒有被呼叫,程式就終止了。
程式即使顯式呼叫System.gc或Runtime.gc方法,也不能保證垃圾回收操作一定執行,也就不能保證物件的finalize方法一定被呼叫。
當垃圾回收器在執行finalize方法的時候,如果出現了異常,垃圾回收器不會報告異常,程式繼續正常執行。
@Override
protected void finalize{
System.out.println("in finalize");
}
在 Java 程式設計裡面,一般不需要我們去寫析構方法,這裡只是瞭解一下就可以了。
成員變數
成員變數是指類的一些屬性定義,標誌類的靜態特徵,它的基本格式如下:
訪問修飾符 修飾符 型別 屬性名稱=初始值;
訪問修飾符:可以使用四種不同的訪問修飾符中的一種,包括public(公共的)、protected(受保護的),無修飾符和 private(私有的)。public 訪問修飾符表示屬性可以從任何其它程式碼呼叫。private 表示屬性只可以由該類中的其它方法來呼叫。protected 將在以後的課程中討論。
修飾符:是對屬性特性的描述,例如後面會學習到的:static、final 等等。
型別:屬性的資料型別,可以是任意的型別。
屬性名稱:任何合法識別符號
初始值:賦值給屬性的初始值。如果不設定,那麼會自動進行初始化,基本型別使用預設值,物件型別自動初始化為 null。
成員變數有時候也被稱為屬性、例項變數、域,它們經常被互換使用。