Java基礎(七)★接口★內部類★包

final

final可以修飾數據,方法,類

final修飾某個量的時候,這個量稱之爲常量---定義好之後不可改變---對於基本類型,指的是值不可變;對於引用類型,指的是地址不可變,但是其中的屬性值可以改變

public class Demo {
private final int i;
 
public Demo(){
    this(5);
} 
public Demo(int i){
    this.i = i; 
}
}
Demo d = new Demo(5);

final修飾方法稱之爲最終方法---不可被重寫--但是可以被繼承,可以進行重載

final修飾類稱之爲最終類---不可被繼承---最終類中的方法無法被重寫

子類在繼承父類的時候,哪些東西是在子類中不可見的?---private,代碼塊,構造函數

abstract抽象方法

如果所有的子類中存在了一些名稱一致而細節不同的方法的時候,這個時候可以在父類中聲明該行爲,此時聲明行爲的時候不需要添加方法體,所以此時該方法就形成了抽象方法---abstract修飾---抽象方法所在的類一定是抽象類。

抽象類不能實例化/創建對象,但是有構造方法/函數

抽象類中可以有抽象方法也可以沒有抽象方法。抽象類中可以定義一切的屬性以及普通方法和靜態方法。

抽象方法之間可以重載嗎?---可以---重載只關心方法名和參數列表

抽象方法可以用static/final/private修飾嗎?---不可以

如果一個抽象方法的權限修飾符是默認權限,對子類是否有要求?---要求父子類必須同包

最終類可以是抽象類嗎?---不可以

接口

interface來聲明一個接口。---implements來實現一個接口。類在實現接口之後需要實現接口中所有的抽象方法。

implements關鍵字讓類和接口之間產生練習,這種聯繫稱之爲實現。

接口中的方法默認是抽象方法而且只能是抽象方法(JDK1.7及其以前)

單繼承,多實現---一個類只能繼承一個父類,但是可以實現多個接口---一旦出現了多實現,那就必不可免的可能會導致方法的混亂---針對的是類

interface A{
void m();// 默認是public修飾
}
public class B implements A{
void m(){	// 接口中的方法默認是public修飾---重寫 一大 原則    // 需要添加修飾符public
System.out.println(“B m()”);
}
}

Java中,接口可以繼承接口---接口之間是多繼承

接口中不允許定義構造方法---雖然接口在編譯完成之後會產生class文件,但是接口不是類

接口中的方法默認是抽象方法,接口中的量默認是靜態常量---接口中可以定義屬性,默認用public static final修飾

抽象類在實現接口之後一定要實現這個接口中的所有的抽象方法嗎?---不一定

接口可以在一定程度上統一結構實現方法的統一調用,但是可能會導致代碼的冗餘

接口可以作爲模板---反射

內部類

定義在類或者接口中的類就稱之爲內部類

方法內部類

定義在方法中的類--只能定義它的方法中使用;

方法內部類中不能定義靜態屬性和靜態方法但是可以定義靜態常量;

方法內部類可以使用外部類中的一切屬性和方法,但是如果使用當前方法的數據的時候,要求這個數據是一個常量

外部類$數字內部類.class

成員內部類

定義在類內方法外的類

靜態內部類

static修飾的內部類

匿名內部類

匿名內部類本質上是繼承了對應的類或者是實現了對應的接口---只要一個類可以被繼承,那麼這個類就可以出現匿名內部類的形式。

如果匿名內部類定義到了方法中,此時匿名內部類的使用規則和方法內部類一致

如果匿名內部類定義到了類中,此時匿名內部類的使用規則和成員內部類一致、

擴展:內部接----定義在類或者接口中的接口----類中的接口默認是靜態的,接口中的類或者接口都是用static修飾的

聲明包用的package---一個Java文件中只允許存在一個package語句,而且這個package語句必須放在整個Java文件的首行

package 包名;

import---導包語句

import java.util.*---表示導入util包下的所有的類但是不包括子包下的類--- *是一個通配符

java.lang---核心類庫---一個Java程序運行之前會先自動的把這個包下的所有的類加載到了方法區---在使用的時候不需要導包

java.util---工具包---存放了一系列簡化操作的工具類

java.io---數據傳輸

java.net---網絡傳輸

java.math---數學運算

java.sql---數據庫

java.awt---圖形用戶界面---幾乎不用

java.security---數據安全

java.text---格式化

javax.*---擴展包

org.*---第三方廠商和開源社區提供的包

注意:包名不能以java,javax,org開頭


發佈了1 篇原創文章 · 獲贊 12 · 訪問量 6811
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章