Java基礎學習筆記(八)—— java中的類、包、方法重載
Life was like a box of chocolates, you never know what you’re gonna get.
| @Author:TTODS
面向對象是Java最重要的特性。Java是徹底的、純粹的面嚮對象語言,在Java中“一切都是對象”。本章將介紹面向對象基礎知識。
面向對象三個基本特性
封裝性
將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問。
繼承性
繼承是類與類的一種關係,是一種“is a”的關係。比如“狗”繼承“動物”,這裏動物類是狗類的父類或者基類,狗類是動物類的子類或者派生類。
多態性
多態性是指在父類中成員變量和成員方法被子類繼承之後,可以具有不同的狀態或表現行爲。
類
類是Java中的一種重要的引用數據類型,是組成Java程序的基本要素。它封裝了一類對象的數據和操作。
類聲明
類的聲明格式如下:
[public][abstract|final] class className [extends superclassName] [implements interfaceNameList] {
//類體
}
其中[ ]
內的代碼表示可省略,|
表示或者。
public
,abstract
,final
用來修飾類的聲明。
class className
: class
是類聲明的關鍵字,className
是類名
extends superclassName
:表繼承,superclassName
是父類名。可以省略,省略則代表父類是Object
,Object
類是所有類的根類,所有類都直接或間接繼承Object
implements interfaceList
:類實現的接口列表
成員變量
成員變量的聲明格式如下:
class className {
[public | protected | private ] [static] [final] type variableName; //成員變量
}
type
是成員變量的類型,variableName
是成員變量名。type前的關鍵字都是成員變量的修飾符,說明如下:
public
、protected
和private
修飾符用於封裝成員變量。
static
修飾符用於聲明靜態變量,所以靜態變量也稱爲“類變量”。
final
修飾符用於聲明變量,該變量不能被修改。
成員方法
class className {
[public | protected | private ] [static] [final | abstract] [native] [synchronized]
type methodName([paramList]) [throws exceptionList] {
//方法體
}
}
public
,protected
,private
修飾符用於封裝方法
static
修飾符用於聲明靜態方法,靜態方法也叫“類方法”
final
| abstract
不能同時修飾方法,final
修飾的方法不能在子類中被覆蓋;abstract
用來修飾抽象方法,抽象方法必須在子類中被實現。
native
修飾方法,稱爲“本地方法”,本地方法調用平臺本地代碼(如:C或C++編寫的代碼),不能實現跨平臺。
synchronized
修飾的方法是同步的,當多線程方式同步方法時,只能串行地執行,保證是線程安全的.
paramList
是該方法的參數列表
throws exceptionList
是拋出異常列表
包
包作用
我們在c++中經常使用下面這樣的代碼:
using namespace std;
意思是使用標準的命名空間。區分不同的命名空間是因爲一樣的標識符在不同的命名空間內用法可能不同。其實java中的包本質上就是命名空間
包定義
package pkg1[.pkg2[.pkg3…]];
pkg1~ pkg3都是組成包名一部分,之間用點(.)連接,它們命名應該是合法的標識符,其次應該遵守Java包命名規範,即全部小寫字母。
包引入
使用 import 引用包
import package1[.package2…].(類型名|*);
常用包
- java.lang包
java.lang包含中包含了Java語言的核心類,如Object、Class、String、包裝類和Math等,還有包裝類Boolean、Character、Integer、Long、Float和Double。使用java.lang包中的類型,不需要顯示使用import語句引入,它是由解釋器自動引入。 - java.io包
java.io包含中提供多種輸入/輸出流類,如InputStream、OutputStream、Reader和Writer。還有文件管理相關類和接口,如File和FileDescriptor類以及FileFilter接口。 - java.net包 java.net包含進行網絡相關的操作的類,如URL、Socket和ServerSocket等。
- java.util包 java.util包含一些實用工具類和接口,如集合、日期和日曆相關類和接口。
- java.text包 java.text包中提供文本處理、日期式化和數字格式化等相關類和接口。
- java.awt和javax.swing包
java.awt和javax.swing包提供了Java圖形用戶界面開發所需要的各種類和接口。java.awt提供是一些基礎類和接口,javax.swing提供了一些高級組件。
方法重載(Overload)
同樣的方法名使用不同的參數列表,對不同的參數列表調用不同的方法叫做方法的重載。
例如前面的String 中 的indexOf方法