|
1, 包的定義
package必須作為java源檔案的第一條語句:
package packagename;
如果省略了package語句,將放入預設包中,預設包沒有名字。包以目錄的形式組織
引入包中的類:import語句
java.lang包是java語言的核心類庫,是java程式運行必不可少的系統類別庫,系統會自動引入,不需要使用import再引入。
2, 類中變數和方法的存取權限
注意:類前面的的許可權修飾符只能是public或者沒有(預設),預設的類只能在本包中使用,public的類可以在所有包中使用。
這裡要說的是類中成員變數和方法的存取權限,它們可以用public,protected,預設,private修飾。
存取權限 同一類中 該類的子類 同一包中 其他包
public 可以 可以 可以 可以
protected 可以 可以 可以 子類可以
預設 可以 可以 可以 不可以(子類也不行)
Private 可以 不可以 不可以 不可以
關於存取權限,http://wenku.baidu.com/view/526b0babd1f34693daef3e83.html總結的相當詳細,已下載下來了,這裡貼不上去
垃圾啊,文章長一點就得分兩次
3, 類的繼承
Class ChildClassextends FatherClass
{
//繼承父類的部分成員變數和方法,不用重複代碼
……擴充的的成員變數或方法
}
規則:
子類和父類在同一個包中:
子類繼承父類中public,protected,友好型(即預設,對本包友好)的成員變數和方法,不能繼承私人的成員變數和方法
子類和父類不在同一個包中:
子類繼承父類的public,protected成員變數和方法,不能繼承私人和友好的成員變數和方法
覆蓋:指子類擁有跟父類相同的的成員變數或成員方法。
覆蓋可以隱藏父類中的成員變數和方法,覆蓋的目的是通過在子類中重新定義變數和方法來擴充父類的功能,注意這裡的重新定義指的是:傳回型別,名字,參數完全完全相同,只有這樣,才叫做覆蓋了。(父類被遮蓋了),覆蓋方法的存取權限不能比原方法的低。
在子類的對象調用的時候,首先看擴充的方法中有沒有,沒有的話才去調用從父類繼承的方法(事實上有了覆蓋之後,被覆蓋的從父類繼承來的方法就看不見了)
4, 類的多態性
當子類從某個父類繼承來時,可能要修改父類中某個方法的實現方式(覆蓋),當子類的方法被調用時,啟用的是該子類的方法。當方法被不同的對象調用時,產生不同的行為,這就是多態。
5, 抽象類別
抽象類別是專門用作其他類的父類來使用的,抽象類別不能建立對象。
包含抽象方法的類叫做抽象類別(可能也含有非抽象方法)
抽象方法指只有聲明沒有具體實現的方法。
abstract classClassName
{
…..
abstractreturnType method();
…..
….
}
6, 介面
interface 介面名
{
//介面體中的變數和方法
}
注意:
1) interface只能被public修飾或者不修飾,public修飾的可以被任意一個類使用,不修飾的稱為友好介面,只能被本包中類使用。
2) 介面中的變數全部是static常量,即static final的,這是預設的,省略static final也可以。
3) 介面中的方法全部是抽象方法,abstract也可寫可不寫。(只能用public修飾或者預設)
4) 一個類通過關鍵字implements聲明自己使用(實現)一個或多個介面:
class ClassName implements interface1,interface2
{
//要實現介面中的所有方法,方法必須和介面中的聲明完全一致
}
5) 介面的繼承:
利用extends,介面也可以繼承另一個介面,文法與類相同,當一個類實現了一個介面,而這個介面繼承了另一個介面時,這個類必須實現所有介面中的方法。
|