Java封裝的概念詳解


一:封裝的概念

Java是一門面向對象的語言,面向對象就是一種以組件化模式進行代碼開發的思想,面向對象的理解你需要學完整個課程才會有感覺,面向對象有

三個基本特征:封裝、繼承、多態。

今天學習的是封裝,封裝是一個非常廣泛的概念,小到一個屬性的封裝,大到一個框架或者一個項目的封裝,比如說我們后面學習的框架就是第三方封裝好的api ( Application Programming Interface) 。今天我們看封裝的最小概念(屬性的封裝)。

DEMO:觀察代碼

  package com. bai . demo;
public class Hello {
   public static void main(String[] args) {
      Person per=new Person( );
      per . name="李四";
      per .age=-10;
      System. out . println("我的名字是:"+per . name) ;
      System . out . println("我的年齡是:"+per.age) ;
   }
}

 

此時的代碼在語法上沒有錯誤,但是在邏輯上出現了問題,因為一個的年齡不.可能是負數,出現這一問題的根本原因是外部程序能直接訪問Person類中的屬性age,如果要讓其屬性不能被外部訪問那么我們可以使用一個關鍵字來封裝屬性,這個關鍵字是“private”表示私有的。

DEMO:封裝屬性

   package com. bai . demo;
//定義了一個規范人信息的類
public class Person {
    //名字
      String  name ;
      //年齡
      private int age;
}

 

此時發現了外部程序不能訪問age屬性了,提示的錯誤是“這個屬性不可見”那么如果一個屬性不能訪問就失去了本身意義,我們應該為這個封裝的屬性在內部提供方法(接口)來訪問該屬性,這樣的方法需要兩個:一個是取得該屬性( getter方法),另外一個是為該屬性賦值(setter 方法)

DEMO:提供setter和getter方法訪問age屬性

 package com.bai . demo;
//定義了一個規范人信息的類
public class Person {
    //名字
      String name;
      //年齡
      private int age;
      public void setAge(int myage) {
        age=myage ;
      }
      public int getAge() {
       return   age;
   }
  }

 

 package com. bai . demo;
public class Hello {

 

 public static void main(String[] args) {
    Person per=new Person( ) ;
      Person per=new Person( ) ;
      per. name="李四";
      per. setAge(-10);
      System. out. println("我的名字是:"+per . name) ;
      System. out . print1n("我的年齡是: "+per. getAge());
  }
}

 

}

有同學就說:折騰了半天依然可以是負數呀,不是白搞了嗎?其實上當我們通過方法來訪問屬性的時候我們可以在方法中做-一些邏輯判斷,讓數據更完全。比如說我們可以在方法中判斷你輸入的年齡是否合理。

DEMO: setter 方法中判斷年齡

 package com. bai . demo;
//定義了一個規范人信息的類
public class Person {
  //名字.
   String   name ;
   //年齡
    private int age;
    public void setAge( int  myage) {
     if(myage<=0||myage>200) {//如果傳入 年齡為負數則使用默認值
        age=10;
     }else {
       age=myage;
  }
}
    public int   getAge() {
      return   age ;
  }
}

 

 

package com. bai . demo ;
public class Hello {
  public static void main(String[] args) {
      Person per=new Person( );
      per. name="李四";
      per.setAge(1000);
      System. out . println("我的名字是: "+per . name);
      System. out. println("我的年齡是: "+per. getAge());
   }
 }

 

以上就是屬性的封裝,在開發中一個類的屬性基本都要封裝,尤其是簡單Java類(JavaBean)需要封裝,封裝之后要為封裝的屬性提供setter個getter方法。

總結:

1、封裝的好處:

●可以讓程序內部結構更安全

●可以把重復的代碼封裝,之后再需要的地方進行調用,在一定程度上解決了代碼的重復

2、今天學習的是封裝的最小概念(屬性的封裝)

3、封裝的屬性要提供setter和getter方法

4、setter 和getter方法的書寫規則:

●setter 方法: set+首寫字母大寫的屬性名, 沒有返回值(void),有參數。

●getter 方法: get+首寫字母大寫的屬性名,有返回值,沒有參數。

 

更多往期視頻可以到我嗶哩嗶哩上觀看:碼邦主2020年最新的Java視頻教程

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM