Java面向對象的三大特性之封裝一:面向對象的三大特性;二:封裝的概念;三:封裝的好處;四:實現Java封裝的步驟; ...
Java面向對象的三大特性之封裝
一:面向對象的三大特性;
- 封裝
- 繼承
- 多態
二:封裝的概念;
將類的某些信息隱藏在類內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問;
封裝可以被認為是一個保護屏障,防止該類的代碼和數據被外部類定義的代碼隨機訪問。
要訪問該類的代碼和數據,必須通過嚴格的介面控制。
封裝最主要的功能在於我們能修改自己的實現代碼,而不用修改那些調用我們代碼的程式片段。適當的封裝可以讓程式碼更容易理解與維護,也加強了程式碼的安全性。
三:封裝的好處;
1.只能通過規定的方法訪問數據
2.隱藏類的實例細節,方便修改和實現
3.類內部的結構可以自由修改
四:實現Java封裝的步驟;
1.修改屬性的可見性;
如:
2.創建getter/setter方法;
如:
3.在getter/setter方法中加入屬性控制語句;
對屬性值的合法性進行判斷
4.舉個例子:
部分講解在註釋,請留意。
我們應該用封裝的方式將我們的屬性信息隱藏起來,給用戶一個特定的方式訪問數據
所以我們在源代碼的變數加private修飾符
代碼如下:
public class Telphone { private float screen; private float cpu; private float mem; //自己創建的構造方法 public Telphone(){ System.out.println("無參的構造方法執行了"); } public Telphone(float newScreen,float newCpu,float newMem){ screen = newScreen; cpu = newCpu; mem =newMem; System.out.print("有參的構造方法執行了"); } }
於是現在不允許用戶隨便訪問預設的值了
如何訪問呢,我們使用set/get方法訪問
代碼如下:
Telphone類:
package com.test; //1.定義一個類 public class Telphone { private float screen; private float cpu; private float mem; //自己創建的構造方法 //創建一個get方法獲得屬性Screen的值 public float getScreen(){ return screen; } //創建一個set方法傳入參數 public void setScreen(float newScreen){ screen =newScreen; } public Telphone(){ System.out.println("無參的構造方法執行了"); } public Telphone(float newScreen,float newCpu,float newMem){ screen = newScreen; cpu = newCpu; mem =newMem; System.out.print("有參的構造方法執行了"); } }
InitailTelphone類:
package com.test; public class InitailTelphone { public static void main(String[] args) { Telphone phone2 = new Telphone(5.0f,1.4f,2.0f); //phone2.cpu = 5.2f;//在這個例子中,用戶可以通過phone2這個對象直接修改我們的原始數據, //這樣是不安全的 //通過封裝方法set方法得到屬性Screen的值 phone2.setScreen(6.0f); System.out.println(); System.out.println("screen:"+phone2.getScreen()); } }
這裡我們使用了set方法傳入參數並通過get方法獲取了Screen值的屬性
運行結果為:
所以封裝就是隱藏屬性,通過方法來得到屬性
其中set方法用來傳入參數,get方法用來獲取參數