介面(inte***ce):初期理解,可以認為是乙個特殊的抽象類
當抽象類中的方法都是抽象的,那麼該類可以通過介面的形式來表示
class用於定義類
inte***ce用於定義介面
介面定義時,格式特點:
1介面中常見定義:常量、抽象方法。
2介面中的成員都有固定修飾符。
常量:public static final
方法:public abstract
介面中的成員都是public的
介面是不可以建立物件的,因為有抽象方法。
需要被子類實現,子類對介面中的方法全部覆蓋後,子類才可以例項化。
否則子類是乙個抽象類
abstract(抽象)當多個類中出現相同功能,但是功能主體不同,這時可以進行向上抽取,這時,只抽取功能定義,而不抽取功能主體
抽象方法必須放在抽象類中: abstract class student
抽象類的特點:1抽象方法一定在抽象類中
2抽象方法和抽象類必須被abstract關鍵字修飾
3抽象類不可以用new建立物件,因為呼叫抽象方法沒意義
4抽象類中的方法要被使用,必須由子類複寫其所有的抽象方法後,建立子類物件呼叫
如果子類只覆蓋了部分抽象方法,那麼該子類還是乙個抽象類
抽象類和一般類沒有太大不同。該如何描述事物,就如何描述事物,只不過,該事物出現了一些看不懂的東西
這些不確定的部分,也是該事物的功能,需要明確出來,但是無法定義主體,通過抽象方法來表示
抽象模擬一般類多了個抽象函式
抽象類不可以例項化
特殊:抽象類中可以不定義抽象方法,這樣做僅僅是不讓該類建立物件。
內部類:就是乙個類定義在另乙個的裡面,對裡面那個類就稱為內部類(內建類、巢狀類)
訪問特點:內部類可以直接訪問外部類中的成員,包括私有成員
(之所以可以直接訪問外部類中的成員,是因為內部類中持有了乙個外部類的引用,格式 外部類名.this)
而外部類要訪問內部類中的成員必須要建立內部類的物件
訪問格式:1當內部類定義在外部類的成員位置上,而且非私有,在外部其他類中,可以直接建立內部類物件
格式: 外部類名 變數名=外部類物件.內部類物件
2當內部類在成員位置上時,就可以被成員修飾符所修飾。
比如、private 將內部類在外部類中進行封裝
static 內部類就具備了靜態的特性
當內部類被static修飾後,只能直接訪問外部類中的static成員。
在外部其他類中,如何直接訪問靜態內部類? new 外部類名.內部類名().內部類非靜態成員()
注意:當內部類中定義了靜態成員,該內部類必須是static的。
當外部類中的靜態方法訪問內部類時,內部類也必須是靜態的
當描述事物時,事物的內部還有事物,該事物用內部類來描述。因為內部事物在使用外部事物的內容
內部類定義在區域性時,
1不可以被成員修飾符修飾
2可以直接訪問外部類中的成員,因為還持有外部類中的引用。
但是不可以訪問它所在的區域性中的變數,只能訪問被final修飾的區域性變數。
匿名內部類:
1匿名內部類其實就是內部類的簡寫格式
2定義匿名內部類的前提
內部類必須是繼承乙個類或者實現介面
3匿名內部類的格式: new 父類或者介面()
4其實匿名內部類就是乙個匿名子類物件,而且這個物件有點胖(可以理解為乙個帶內容的物件)
5匿名內部類中定義的方法最好不要超過3個
黑馬程式設計師 Java 學習筆記
filewriter 建立乙個filewriter物件,該物件一被初始化就必須明確被操作的檔案,而且該檔案會被建立到指定的目錄下。如果該目錄下已有同名檔案,將被覆蓋。下面的例子是將客戶端的檔案拷貝到伺服器上 客戶端 socket s newsocket 1.1.1.1 10000 定義客戶端的套接字...
黑馬程式設計師 JAVA學習筆記2
asp.net android ios開發 net培訓 期待與您交流!詳細請檢視 介面中的成員變數都是publci 的static 的和final 的。介面中的方法都是 public 的。單例模式 表示乙個類只會生成唯一的乙個物件。怎樣才能乙個類只會生成乙個物件呢 首先其構造方法是不應該被外界訪問的...
黑馬程式設計師 java學習筆記 列舉
假設用1 7分別表示星期一到星期日,一般0表示星期日 6表示星期六 但有人可能會寫成int weekday 0 或即使使用常量方式也無法阻止意外。列舉就是要讓某個型別的變數的取值只能為若干個固定值中的乙個,否則,編譯器就會報錯。列舉可以讓編譯器在編譯時就可以控制源程式中填寫的非法值,普通變數的方式在...