類的聲明
使用關鍵字extends用于繼承類,使用關鍵字implements用于實現接口
class MyClass extends MySuperClass implements MyInterfaces1, MyInterface2 {
// fields, constructors, and
// method declarations
}
類還可以使用修飾符public, private, protected, 但是private只能用于嵌套類
方法的重載
Java通過方法的簽名(signatures)來區分類中不同的方法,因此可以聲明同樣名字的方法(只要它們的參數類型及個數不同即可),即重載(overload)
方法的簽名 = 方法名 + 方法的參數。 返回值類型不是簽名的一部分!
?? 方法被重載時,編譯器依據傳入的參數個數及類型來確定具體哪個方法被調用
構造函數
自定義類可以不提供構造函數,但是如果該自定義類存在子類的,必須至少提供一個默認的無參的構造函數
當子類沒有聲明構造函數的時候,編譯器會默認調用其父類的默認的無參的構造函數。如果父類中不存在該無參構造函數,那就會有編譯錯誤
初始化塊
一個類可以有多個靜態初始化塊,編譯器按照靜態初始化塊的順序執行。
Java編譯器會將實例初始化塊放入每一個構造函數,因此這種方法可以在多個構造函數之間共享代碼
class InitializationBlock {
/* 靜態初始化塊 */
static {
/* 初始化靜態變量 */
}
/* 實例初始化塊 */
{
/* 初始化實例變量 */
}
}
可變參數
可變參數(varargs)是指方法聲明中用...聲明的參數變量,它不限定參數的個數,使用起來時類似數組
public Polygon polygonFrom(Point... corners) {
int numberOfObjects = corners.length;
double squareOfSide, lengthOfSide;
squareOfSide = ( corners[1].x - corners[0].x ) * ( corners[1].x - corners[0].x )
+ ( corners[1].y - corners[0].y ) * ( corners[1].y - corners[0].y ) ;
lengthOfSide = Math.sqrt(squareOfSide);
}
創建對象
雖然創建對象很簡單,但是語句Point point = new Point(23, 40);里面有大文章
- 聲明:
Point point聲明了引用變量,其類型是Point;
- 實例化:new關鍵字告訴編譯器創建一個對象;
- 初始化:new關鍵字后的是構造函數,告訴編譯器用該構造函數初始化剛剛實例化的那個對象
- 引用: 返回剛剛初始化完成的那個對象的內存地址給引用變量存儲
訪問修飾符
| modifier |
Class |
Package |
SubClasss |
Global |
| public |
Y |
Y |
Y |
Y |
| protected |
Y |
Y |
Y |
N |
| no modifier |
Y |
Y |
N |
N |
| private |
Y |
N |
N |
N |