日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【封装、构造方法】

發布時間:2025/3/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【封装、构造方法】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 封裝

1.1 封裝概述

概述

面向對象編程語言是對客觀世界的模擬,客觀世界里成員變量都是隱藏在對象內部的,外界無法直接操作和修改。封裝可以被認為是一個保護屏障,防止該類的代碼和數據被其他類隨意訪問。要訪問該類的數據,必須通過指定的方式。適當的封裝可以讓代碼更容易理解與維護,也加強了代碼的安全性。

原則

屬性隱藏起來,若需要訪問某個屬性,提供公共方法對其訪問。

1.2 封裝的步驟

  • 使用 private 關鍵字來修飾成員變量。
  • 對需要訪問的成員變量,提供對應的一對 getXxx方法 、setXxx 方法。
  • 1.3 封裝的操作——private關鍵字

    private的含義

  • private是一個權限修飾符,代表最小權限。
  • 可以修飾成員變量和成員方法。
  • 被private修飾后的成員變量和成員方法,只在本類中才能訪問。
  • private的使用格式

    private 數據類型 變量名 ;
  • 使用 private 修飾成員變量,代碼如下:
  • public class Student {private String name;private int age; }
  • 提供 getXxx方法 / setXxx 方法,可以訪問成員變量,代碼如下:
  • public class Student {private String name;private int age;public void setName(String n) {name = n;}public String getName() {return name;}public void setAge(int a) {age = a;}public int getAge() {return age;} }

    1.4 封裝優化1——this關鍵字

    我們發現 setXxx 方法中的形參名字并不符合見名知意的規定,那么如果修改與成員變量名一致,是否就見名知意了呢?代碼如下:

    public class Student {private String name;private int age;public void setName(String name) {name = name;}public void setAge(int age) {age = age;} }

    經過修改和測試,我們發現新的問題,成員變量賦值失敗了。也就是說,在修改了setXxx() 的形參變量名后,方法并沒有給成員變量賦值!這是由于形參變量名與成員變量名重名,導致成員變量名被隱藏,方法中的變量名,無法訪問到成員變量,從而賦值失敗。所以,我們只能使用this關鍵字,來解決這個重名問題。

    this的含義

    this代表所在類的當前對象的引用(地址值),即對象自己的引用。

    記住 :方法被哪個對象調用,方法中的this就代表那個對象。即誰在調用,this就代表誰。

    this使用格式

    this.成員變量名;

    使用 this 修飾方法中的變量,解決成員變量被隱藏的問題,代碼如下:

    public class Student {private String name;private int age;public void setName(String name) {//name = name;this.name = name;}public String getName() {return name;}public void setAge(int age) {//age = age;this.age = age;}public int getAge() {return age;} }

    小貼士:方法中只有一個變量名時,默認也是使用 this 修飾,可以省略不寫。

    1.5 封裝優化2——構造方法

    當一個對象被創建時候,構造方法用來初始化該對象,給對象的成員變量賦初始值。

    小貼士:無論你與否自定義構造方法,所有的類都有構造方法,因為Java自動提供了一個無參數構造方法,一旦自己定義了構造方法,Java自動提供的默認無參數構造方法就會失效。

    構造方法的定義格式

    修飾符 構造方法名(參數列表){// 方法體 }

    構造方法的寫法上,方法名與它所在的類名相同。它沒有返回值,所以不需要返回值類型,甚至不需要void。使用構造方法后,代碼如下:

    public class Student {private String name;private int age;// 無參數構造方法public Student() {} // 有參數構造方法public Student(String name,int age) {this.name = name;this.age = age; } }

    注意事項

  • 如果你不提供構造方法,系統會給出無參數構造方法。
  • 如果你提供了構造方法,系統將不再提供無參數構造方法。
  • 構造方法是可以重載的,既可以定義參數,也可以不定義參數。
  • 1.6 標準代碼——JavaBean

    JavaBean 是 Java語言編寫類的一種標準規范。符合JavaBean 的類,要求類必須是具體的和公共的,并且具有無參數的構造方法,提供用來操作成員變量的set 和get 方法。

    public class ClassName{//成員變量//構造方法//無參構造方法【必須】//有參構造方法【建議】//成員方法 //getXxx()//setXxx() }

    編寫符合JavaBean 規范的類,以學生類為例,標準代碼如下:

    public class Student {//成員變量private String name;private int age;//構造方法public Student() {}public Student(String name,int age) {this.name = name;this.age = age;}//成員方法publicvoid setName(String name) {this.name = name;}public String getName() {return name;}publicvoid setAge(int age) {this.age = age;}publicint getAge() {return age;} }

    測試類,代碼如下:

    public class TestStudent {public static void main(String[] args) {//無參構造使用Student s= new Student();s.setName("柳巖");s.setAge(18);System.out.println(s.getName()+"---"+s.getAge());//帶參構造使用Student s2= new Student("趙麗穎",18);System.out.println(s2.getName()+"---"+s2.getAge());} }

    總結

    以上是生活随笔為你收集整理的【封装、构造方法】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。