Java封裝(Encapsulation)-詳解
【1】生活案例:
ATM , 電線
【2】Java中封裝的理解:
將某些東西進行隱藏,然後提供相應的方式進行獲取。
我們程式設計追求“高內聚,低耦合”。
➢高內聚:類的內部資料操作細節自己完成,不允許外部干涉;
➢低耦合:僅對外暴露少量的方法用於使用。
隱藏物件內部的複雜性,只對外公開簡單的介面。便於外界呼叫,從而提
高系統的可擴充套件性、可維護性。通俗的說,把該隱藏的隱藏起來,該暴露
的暴露出來。這就是封裝性的設計思想。
【3】封裝的好處:
提高程式碼的安全性
【4】程式碼:通過一個屬性感受封裝:
public class Girl {//女孩
//屬性:
private int age;
//讀取年齡:
public int duquAge(){
return age;
}
//設定年齡:
public void shezhiAge(int age){
if(age >= 30 ){
this.age = 18;
}else{
this.age = age;
}
}
}
public class Test {
//這是一個main方法,是程式的入口:
public static void main(String[] args) {
//建立一個Girl類的物件:
Girl g = new Girl();
/*g.age = 33;
System.out.println(g.age);*/
//設定年齡:
g.shezhiAge(31);
//讀取年齡:
System.out.println(g.duquAge());
}
}
上面的程式碼,對於屬性age來說,我加了修飾符private,這樣外界對它的訪問就受到了限制,現在我還想加上其他的限制條件,但是在屬性本身上沒有辦法再加了,所以我們通過定義方法來進行限制條件的新增。
以屬性為案例:
進行封裝:
(1)將屬性私有化,被private修飾–》加入許可權修飾符
一旦加入了許可權修飾符,其他人就不可以隨意的獲取這個屬性
(2)提供public修飾的方法讓別人來訪問/使用
(3)即使外界可以通過方法來訪問屬性了,但是也不能隨意訪問,因為我們們在方法中可以加入 限制條件。
【5】實際開發中,方法一般會寫成 setter,getter方法:
可以利用IDEA快捷鍵生成:alt+insert -->getter and setter:
public class Girl {//女孩
//屬性:
private int age;
//讀取年齡:
public int getAge(){
return age;
}
//設定年齡:
public void setAge(int age){
if(age >= 30 ){
this.age = 18;
}else{
this.age = age;
}
}
}
【6】加深練習:
public class Student {
//屬性:
private int age;
private String name;
private String sex;
//加入對應的setter和getter方法:
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
if("男".equals(sex) || "女".equals(sex) ){//sex是男 或者 是 女
this.sex = sex;
}else{
this.sex = "男";
}
}
//加入構造器:
public Student(){
}
public Student(int age,String name,String sex){
this.age = age;
this.name = name;
//this.sex = sex;
this.setSex(sex);
}
}
public class Test {
//這是一個main方法,是程式的入口:
public static void main(String[] args) {
//建立一個Student物件:
Student s1 = new Student();
s1.setName("nana");
s1.setAge(19);
s1.setSex("女");
System.out.println(s1.getName()+"---"+s1.getAge()+"----"+s1.getSex());
Student s2 = new Student(18,"菲菲","asdfasdfsadf");
System.out.println(s2.getName()+"---"+s2.getAge()+"----"+s2.getSex());
}
}
相關文章
- 物件導向08:封裝詳解物件封裝
- java封裝Java封裝
- java 封裝Java封裝
- Java(三)封裝Java封裝
- Java學習-封裝Java封裝
- c# 中的封裝、繼承、多型詳解C#封裝繼承多型
- java三大特性-封裝Java封裝
- Java 封裝 SDK 以及使用Java封裝
- Chapter10 Java封裝APTJava封裝
- Java提高篇(1)封裝Java封裝
- Java 封裝 HDFS API 操作Java封裝API
- 詳解vue中Axios的封裝與API介面的管理VueiOS封裝API
- 基於Windows API的命名管道的封裝與使用詳解WindowsAPI封裝
- Java 位元組的常用封裝Java封裝
- 物件導向之封裝(Java)物件封裝Java
- Java Selenium封裝--RemoteWebDriverJava封裝REMWeb
- java基礎private/封裝篇Java封裝
- 詳解JDBC資料庫連結及相關方法的封裝JDBC資料庫封裝
- 「視訊直播技術詳解」系列之三:編碼和封裝封裝
- Java基礎04 封裝與介面Java封裝
- java自己封裝檔案處理Java封裝
- 複習java物件導向(封裝)Java物件封裝
- Selenium webdriver Java 封裝與重用WebJava封裝
- Java併發程式設計:執行緒封閉和ThreadLocal詳解Java程式設計執行緒thread
- Java註解詳解Java
- Java 註解詳解Java
- 【封裝那些事】 缺失封裝封裝
- Java基礎知識篇02——封裝Java封裝
- # 095 01 Android 零基礎入門 02 Java物件導向 02 Java封裝 01 封裝的實現 03 # 088 01 Android 零基礎入門 02 Java物件導向 02 Java封裝 03 封裝總結 01 封裝知識點總結AndroidJava物件封裝
- java反射詳解Java反射
- Java Stream 詳解Java
- Java 反射詳解Java反射
- 【Java】JDBC詳解JavaJDBC
- Java SPI詳解Java
- 詳解 Java NIOJava
- Java鎖詳解Java
- java CountDownLatch 詳解JavaCountDownLatch
- Java RMI詳解Java