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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

类对象封装构造方法

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

類與對象練習
關注我即可免費下載

文章目錄

    • 面向對象思想概述
    • 類和對象
    • 類的定義
    • 對象的使用
    • 封裝概述
    • 封裝的步驟
    • 封裝的操作——private關鍵字
    • 封裝優化1——this關鍵字
    • 封裝優化2——構造方法
    • 標準代碼——JavaBean
    • Java API
    • Scanner 類
    • BigInteger 類
    • BigDecimal 類

面向對象思想概述

Java語言是一種面向對象的程序設計語言,而面向對象思想是一種程序設計思想,我們在面向對象思想的指引下,
使用Java語言去設計、開發計算機程序。 這里的對象泛指現實中一切事物,每種事物都具備自己的屬性和行為。面
向對象思想就是在計算機程序設計過程中,參照現實中事物,將事物的屬性特征、行為特征抽象出來,描述成計算
機事件的設計思想。

面向過程與面向對象的區別:
面向過程:強調步驟。
面向對象:強調對象。

面向對象特點
面向對象思想是一種更符合我們思考習慣的思想,它可以將復雜的事情簡單化,并將我們從執行者變成了指揮者。
面向對象的語言中,包含了三大基本特征,即封裝、繼承和多態。

類和對象

類與對象的關系

  • 類是對一類事物的描述,是抽象的。
  • 對象是一類事物的實例,是具體的。
  • 類是對象的模板,對象是類的實體 。

類的定義

  • 類的定義格式
  • public class ClassName { //成員變量 //成員方法 }
    • 定義類 :就是定義類的成員,包括成員變量和成員方法。
    • 成員變量 :和以前定義變量幾乎是一樣的。只不過位置發生了改變。在類中,方法外。
    • 成員方法 :和以前定義方法幾乎是一樣的。只不過把static去掉,static的作用在面向對象后面課程中再詳細 講解。

    類的定義格式舉例:

    public class Student { //成員變量 String name;//姓名 int age;//年齡 //成員方法 //學習的方法 public void study() { System.out.println("好好學習,天天向上"); } //吃飯的方法 public void eat() { System.out.println("學習餓了要吃飯"); } }

    對象的使用

  • 對象的使用格式
    創建對象:
  • 類名 對象名 = new 類名();

    使用對象訪問類中的成員:

    對象名.成員變量; 對象名.成員方法()

    對象的使用格式舉例:

    public class Test01_Student { public static void main(String[] args) { //創建對象格式:類名 對象名 = new 類名(); Student s = new Student(); System.out.println("s:"+s); //com.kkb.Student@100363 //直接輸出成員變量值 System.out.println("姓名:"+s.name); //null System.out.println("年齡:"+s.age); //0 System.out.println("----------"); //給成員變量賦值 s.name = "趙麗穎"; s.age = 18; //再次輸出成員變量的值 System.out.println("姓名:"+s.name); //趙麗穎 System.out.println("年齡:"+s.age); //18 System.out.println("----------"); //調用成員方法 s.study(); // "好好學習,天天向上" s.eat(); // "學習餓了要吃飯" } }

    成員變量的默認值

    數據類型默認值
    整數(byte,short,int,long)0
    浮點數(float,double)0.0
    字符(char)‘\u0000’
    布爾(boolean)false
    數組,類,接口null

    局部變量成員變量的區別
    1.在類中的位置不同【重點】
    成員變量:類中,方法外
    局部變量:方法中或者方法聲明上(形式參數)
    2.在內存中的位置不同(了解)
    成員變量:堆內存
    局部變量:棧內存
    3.生命周期不同(了解)
    成員變量:隨著對象的創建而存在,隨著對象的消失而消失
    局部變量:隨著方法的調用而存在,隨著方法的調用完畢而消失
    4.初始化值的不同【重點】
    成員變量:有默認值
    局部變量:沒有默認值。必須先定義,賦值,最后使用
    5.作用范圍不一樣【重點】
    成員變量:類中
    局部變量:方法中

    封裝概述

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

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

    封裝的步驟

  • 使用 private 關鍵字來修飾成員變量。
  • 對需要訪問的成員變量,提供對應的一對 getXxx 方法 、 setXxx 方法。
  • 封裝的操作——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——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 修飾,可以省略不寫。

    封裝優化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; } }

    注意事項

  • 如果你不提供構造方法,系統會給出無參數構造方法。
  • 如果你提供了構造方法,系統將不再提供無參數構造方法。
  • 構造方法是可以重載的,既可以定義參數,也可以不定義參數。
  • 標準代碼——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()); } }

    Java API

    Random 類
    Random 類似Scanner,也是Java提供好的API,內部提供了產生隨機數的功能
    使用步驟:

  • 導入包
  • import java.util.Random ;
  • 創建對象
  • Random r = new Random();
  • 產生隨機數
  • int num = r.nextInt(10) ;

    解釋: 10代表的是一個范圍,如果括號寫10,產生的隨機數就是0(包括)-9(包括),括號寫20,參數的隨
    機數則是0(包括)-19(包括)

    使用 Random類,完成生成3個10以內的隨機整數的操作,代碼如下:

    //1. 導包 import java.util.Random; public class Demo01_Random { public static void main(String[] args) { //2. 創建鍵盤錄入數據的對象 Random r = new Random(); for(int i = 0; i < 3; i++){ //3. 隨機生成一個數據 int number = r.nextInt(10); //4. 輸出數據 System.out.println("number:"+ number); } } }

    Scanner 類

    Scanner類的使用步驟
    數據輸入是指獲取用戶鍵盤錄入的數據,那么在java語言中,怎樣實現呢?
    我們可以通過 Scanner 類來獲取用戶的輸入。
    導包
    使用import關鍵字導包,在類的所有代碼之前導包,引入要使用的類型,java.lang包下的所有類無需導入。
    Scanner 類在java.util包下,所以需要將該類導入。

    格式:import 包名.類名;
    舉例:import java.util.Scanner;
    創建對象
    格式:數據類型 變量名 = new 數據類型(參數列表);
    eg:Scanner sc = new Scanner(System.in);
    調用方法
    格式:變量名.方法名();
    舉例:int i = sc.nextInt(); // 接收一個鍵盤錄入的整數
    示例
    獲取鍵盤錄入的整數

    import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { //創建對象 Scanner sc = new Scanner(System.in); //接收數據 int x = sc.nextInt(); //輸出數據 System.out.println("x:" + x); } }

    BigInteger 類

    概述
    java.math.BigInteger 類,不可變的任意精度的整數。如果運算中,數據的范圍超過了long類型后,可以使用BigInteger類實現,該類的計算整數是不限制長度的。
    構造方法
    BigInteger(String value) 將 BigInteger 的十進制字符串表示形式轉換為 BigInteger。超過long類型的范圍,已經
    不能稱為數字了,因此構造方法中采用字符串的形式來表示超大整數,將超大整數封裝成BigInteger對象。

    方法名含義
    add(BigInteger value)返回其值為 (this + val) 的 BigInteger,超大整數加法運算
    subtract(BigInteger value)返回其值為 (this - val) 的 BigInteger,超大整數減法運算
    multiply(BigInteger value)返回其值為 (this * val) 的 BigInteger,超大整數乘法運算
    divide(BigInteger value)返回其值為 (this / val) 的 BigInteger,超大整數除法運算,除不盡取整數部分
    public static void main(String[] args){ BigInteger big1 = new BigInteger("987654321123456789000"); BigInteger big2 = new BigInteger("123456789987654321"); //加法運算 BigInteger add = big1.add(big2); System.out.println("求和:"+add); //減法運算 BigInteger sub = big1.subtract(big2); System.out.println("求差:"+sub); //乘法運算 BigInteger mul = big1.multiply(big2); System.out.println("乘積:"+mul); //除法運算 BigInteger div = big1.divide(big2); System.out.println("除法:"+div); }

    BigDecimal 類

    概述
    java.math.BigDecimal 類,不可變的、任意精度的有符號十進制數。該類可以實現超大浮點數據的精確運算。
    構造方法
    BigDecimal(String value)將 BigDecimal的十進制字符串表示形式轉換為 BigDecimal。
    常用方法
    BigDecimal類的加法減法乘法與BigInteger類相同,不在重復。
    除法計算
    BigDecimal類實現精確的浮點數除法運算,如果兩個浮點除法計算后是無限循環,那么就會拋出異常。
    除法運算方法:

    • BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
      -divesor :此 BigDecimal 要除以的值。
      -scale :保留的位數
      -roundingMode :舍入方式
    • 舍入方式: BigDecimal類提供靜態的成員變量來表示舍入的方式
      -BigDecimal.ROUND_UP 向上加1。
      -BigDecimal.ROUND_DOWN 直接舍去。
      -BigDecimal.ROUND_HALF_UP 四舍五入。
    public static void main(String[] args){ BigDecimal big1 = new BigDecimal("5.25"); BigDecimal big2 = new BigDecimal("3.25"); //加法計算 BigDecimal add = big1.add(big2); System.out.println("求和:"+add); //減法計算 BigDecimal sub = big1.subtract(big2); System.out.println("求差:"+sub); //乘法計算 BigDecimal mul = big1.multiply(big2); System.out.println("乘法:"+mul); //除法計算 BigDecimal div = big1.divide(big2,2,BigDecimal.ROUND_HALF_UP); System.out.println(div); } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

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

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