Java基礎之 接口、抽象類、構造方法、setXxx,getXxx、靜態變量和成員變量、代碼塊、this和super的區別、final關鍵字、重寫與重載

接口:數據庫

1). 什麼是接口?

  接口是對外暴露的規則.

2). 如何定義接口?

  使用關鍵字 interface 接口名{}

3). 接口與類的關係?

  實現關係, 能夠單實現, 也能夠多實現, 可是多個接口名之間, 須要用逗號進行分隔.


  使用關鍵字: implements

    class 實現類 implements 接口名{

  }


4). 接口是否能夠實例化?

  不能夠實例化, 由於內部含有抽象方法.ide

抽象類:this

1). 什麼是抽象類?

  把像的部分和類似的部分抽取到一個父類當中, 抽象類就是一個特殊的父類.

  這個特殊的父類和普通的父類,區別就在於, 抽象類當中能夠定義抽象方法.

2). 如何定義抽象類和抽象方法?

  經過abstract關鍵字

  類: abstract class 類名{}

  方法: public abstract 返回值類型 方法名();

3). 抽象類是否能夠建立對象?

  不能夠, 若是容許的話, 就表明能夠調用沒有方法體的抽象方法, 這樣作沒有任何意義.

4). 抽象類的子類?

  1. 重寫全部的抽象方法 -> 推薦

  2. 將本身自己也變成抽象類


5). 抽象類的成員特色?

  1. 成員變量

    能夠是變量, 也能夠是常量

  2. 成員方法

    能夠是普通的方法, 也能夠是抽象方法

  3. 構造方法

    有, 目的是爲了給子類進行初始化的


總結: 抽象類當中除了能夠定義抽象方法以外, 其他的定義跟普通的類沒有區別.spa

構造方法:code

1). 構造方法的做用?

  用來給對象中的屬性進行初始化的.

  通常都會經過有參構造建立對象, 並給屬性賦值.對象

2). 構造方法的格式?

  A. 方法名要與類名相同, 大小寫也要一致
  B. 沒有返回值類型連void都沒有
  C. 沒有具體的返回值

  問題 : 構造方法沒有返回值, 能夠編寫return語句嗎?

    能夠, 可是return後面不能跟上具體的值.

3). 構造方法的注意事項?

  若是一個類當中, 沒有給出任何構造方法, 那麼系統將會默認提供一個空參的構造方法, 可是若是手動給出了有參構造

  系統將不會再提供默認的空參構造

  建議: 從此空參有參都手動給出.

4).構造方法能夠重載嗎?

  構造方法也是方法, 因此能夠進行重載.blog

 

setXxx與getXxx:繼承

給成員變量初始化有幾種方式?接口

 答:
  1. 經過有參構造初始化
  2. 經過setXxx方法初始化

問題: 兩種方式有什麼區別?

 答案: 通常都是經過有參構造進行(初始化), 再經過setXxx方法(修改)屬性值

  二者每每是配合使用的內存

 

 靜態變量和成員變量

什麼是靜態

答 : 靜態指的就是static關鍵字, static是一個修飾符

被其修飾的成員有什麼特色?


1). 靜態關鍵字的特色是?
  a: 隨着類的加載而加載, 優先於對象存在
  b: 被類的全部對象所共享
  c: 多了一種調用方式, 能夠經過類名.進行調用

2). 靜態的好處是?
  a: 調用方便
  b: 節約內存

3). 靜態關鍵字的注意事項?

  a: 靜態當中只能訪問靜態成員(方法,對象).

  問題: 靜態中是否有this\super關鍵字? 爲何?

    沒有, this表明當前對象的引用, this只有在建立對象以後,纔會存在, super也是同樣.

    靜態存在的時候, 有可能對象沒有被建立出來, 因此說靜態當中沒有this和super.


08. 靜態變量和成員變量的區別?

  1. 所屬不一樣:
    靜態變量 : 類
    成員變量 : 對象
  2. 內存位置不一樣
    靜態變量 : 方法區中, 字節碼文件的靜態區
    成員變量 : 堆內存
  3. 內存出現時間不一樣
    靜態變量 : 隨着類的加載而加載
    成員變量 : 隨着對象的建立而存在
  4. 調用不一樣
    靜態變量 : 多了一種調用方式, 能夠經過類名.進行調用, 也能夠經過對象名進行調用
    成員變量 : 只能對象名進行調用

 

代碼塊


1). 什麼是代碼塊?

     被一對大括號括起來的代碼, 就稱之爲代碼塊

2). 代碼塊的分類?

  1. 局部代碼塊
    位置: 方法中的一對大括號
    做用: 限定了變量的聲明週期, 能夠提前的釋放內存

  2. 靜態代碼塊

    位置: 類中方法外的一對大括號, 須要加入static修飾
    做用: 通常用於加載驅動, 得到數據庫鏈接
    特色: 隨着類的加載而執行, 且只執行一次.

-----------------------------------------

3. 構造代碼塊
4. 同步代碼塊

 

this和super的區別

1).this和super的區別

  1). 什麼是this關鍵字?

    this表明當前對象的引用, 誰來調用我, 我就表明誰.

  2).什麼是super關鍵字

    super : 表明的是當前對象父類的引用.

2). 調用方面有什麼區別?

  成員變量:

    this : 能夠調用本類的成員變量, 也能夠調用父類的成員變量
    前提: 子父類當中沒有出現重名的成員變量.
    super : 能夠調用父類的成員變量

  成員方法:

    this : 能夠調用本類的成員方法, 也能夠調用父類的成員方法
    前提: 子父類當中沒有出現重名的成員方法.

    super : 能夠調用父類的成員方法

  構造方法:

    this() : 調用本類的構造方法

    super() : 調用父類的構造方法


簡單記: this調用的是本類成員, super調用的是父類成員.

 

final關鍵字

final能夠修飾類,方法,變量。

被修飾的類: final修飾的類不能夠被繼承。

被修飾的方法: final修飾的方法不能夠被覆蓋。

被修飾的變量: final修飾的變量是一個常量。只能被賦值一次。

 重寫和重載

問題: 重寫和重載的區別是?

重載(Overload)

 在同一個類中, 方法名相同, 參數列表不一樣, 與返回值無關

參數列表不一樣:
  1. 類型不一樣
  2. 個數不一樣
  3. 順序不一樣(沒有意義)

  好處:能夠提升代碼的閱讀性,(見名知意)

   錯誤誤區:在一個類中,方法名相同,參數列表也相同,這不是重載,這叫方法從新定義

重寫(Override)  子父類當中, 出現了方法聲明如出一轍的方法, 返回值類型小於等於父類的類型. 問題: 方法重寫有哪些注意事項?   a: 子類重寫父類的方法, 訪問權限必須大於等於父類的權限   b: 子類不能重寫父類中私有的方法.

相關文章
相關標籤/搜索