面向物件-封裝
阿新 • • 發佈:2018-12-17
JavaSE學習筆記第七天-面向物件之封裝
-
什麼是封裝?
- 將某些東西包裝在一起,然後以新的完整形式呈現出來。
-
封裝的目的和意義?
- 提高安全,不能讓外部隨便呼叫和更改內部屬性。
- 方便我們控制業務員邏輯。
-
如何實現封裝?
使用private修飾成員變數。然後在給這些成員變數根據相應的需求提供相應的public的set和get方法。
-
get和set方法的意義和書寫形式?
許可權修飾符 void setXxxx(變數型別 xxxx){ this.xxxx = xxxx; } 許可權修飾符 變數型別 getXxxx(){ return xxxx; }
-
this關鍵字
- this指代當前物件。
- this在不會發生混淆的時候可以省略。
- this(引數列表);this();表示呼叫本類的構造方法。
- this呼叫構造方法的時候,必須寫在第一行。
- this.方法名();呼叫本類的方法。
- this.屬性名;訪問本類的屬性。
-
什麼是方法過載?返回值不同能不能作為方法過載的條件?形式引數名不同能不能作為過載條件?
- 方法過載就是相同的方法名,形式引數不一樣。
- 返回值型別不一樣不構成過載,方法的過載和返回值無關。只與方法名和形式引數有關。
- 形式引數名不同不能作為能不能構成過載的條件,因為引數型別一樣的話,是不會構成過載,只有引數型別不一樣,或個數,或順序不一樣才會構成過載,前提是方法名相同。
-
構造方法可不可以過載?
可以,不同的形參下就構成了過載。
-
static關鍵字的作用?【重點】
- 可用於修飾成員變數,成員方法,靜態程式碼塊,讓這些優先於類載入,所以這些用static修飾的類和靜態程式碼塊只能訪問靜態的成員變數。
- 修飾成員變數: 稱為類變數,可以通過類名訪問,也可通過物件訪問,建議使用類名。在記憶體中只會存在一份,所有物件都共享。
- 修飾成員方法:靜態方法,屬於類方法,優先與物件載入到記憶體的靜態方法區。
- 修飾程式碼塊:只會執行一次,一般用於載入配置檔案。 在類載入的時候執行。
- 靜態程式碼優先與類構造器執行。
-
靜態變數和成員變數的區別?【重點、難點】
- 靜態變數又稱類變數。靜態變數是一個類載入之後所有所有的物件都是共用這一個變數。也就是說,它只會存在一份,所有的物件都是訪問這一個,修改了之後所有的物件裡面的值也都是修改了。只有這個程式結束了才會回到這個類變數給定的初始值。
- 成員變數是隻有在這個類new出來之後才會有的,而且每個物件的這個變數都是互不影響的。這個物件給了這個變數一個值,那個物件給了另外的值,這兩個值是不會覆蓋誰的值,互不影響的。
-
包,打包和導包分別使用什麼關鍵字?
- 打包 package 包名
- 導包 import 包名.類名
-
一個java檔案中允不允許有多行package語句?
不能,而且package只能在第一行。
-
允不允許有多個import語句?
可以。
在我理解中:導包的本質應該就是簡化書寫吧,不適用import,也是可以找到這個物件,如下
java.util.Scanner sc = new java.util.Scanner(System.in);
這樣也是可以的,但是這樣的話,很麻煩,而且程式碼會看起來很凌亂。
-
哪個包中的類不需要導包?
java.lang
-
成員變數、區域性變數和靜態變數的區別
成員變數 | 區域性變數 | 靜態變數 | |
---|---|---|---|
定義位置 | 類中,方法外 | 方法中,方法簽名中 | 類中,方法外 |
初始化 | 有預設初始化 | 沒有預設初始化,要賦值才能使用 | 有預設初始化 |
呼叫方式 | 物件例項呼叫 | ---- | 物件呼叫(不推薦),類名呼叫 |
儲存位置 | 堆中 | 棧中 | 方法區 |
生命週期 | 與類共存 | 與方法共存 | 與類共存 |
別名 | 例項變數 | ---- | 類變數 |