<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊 * * * > 加油吧,節奏得快點了 ### 1.概述 > 上篇幅也是講了這點,這篇幅就著重的講一下思想和案例 > > 就拿買電腦來說吧,首先,你不懂電腦,你去電腦城買電腦,和大象裝冰箱里一樣,是什么步驟?咨詢 砍價 ,談妥了就那電腦走人,對吧,這就是面向過程的思想,而面向對象是:你有一個哥們,他懂電腦,什么都會,你只要帶他去,就行,你這個哥們就是對象,在JAVA中,我們就是操作一個對象去完成各種各樣的操作的,這就是面向對象的思想 ### 2.成員變量 > 面向對象有三大特征 * 封裝 * 繼承 > 那具體是什么意思呢?? > 我們開發的話,就是就是在找對象,沒有對象的話,就new 一個對象,對象和類,對象和對象都是有關系的,我們需要去維護 > > 類就是生活中對事物的描述? > 對象就是這類事物實實在在存在的個體 > > 需求:描述汽車(顏色,輪胎個數),描述事物就是在描述事物的屬性和行為? > 我們可以直接定義一個class ~~~ //公共的 類 類名 public class HelloJJAVA { // 公共的 靜態 無返回值 main方法 數組 public static void main(String[] str) { Car car = new Car(); // 輸出顏色 System.out.println(car.color + "的小汽車"); // 輸出輪胎個數 System.out.println(car.num + "個輪子"); // 輸出行為 car.run(); } } /** * 汽車類 * * @author LGL * */ class Car { // 顏色 String color = "紅色"; // 輪胎個數 int num = 4; // 行為 void run() { System.out.println("我是" + color + "的小汽車,我有" + num + "個輪子"); } } ~~~ > 這樣大家看的懂嗎,我們猴子姐new一個Car就可以 ![這里寫圖片描述](http://img.blog.csdn.net/20160515113618819) > 其實定義類,就是描述事物。就是在定義屬性和行為,屬性和行為共同成為類中的成員(**成員變量**) ### 3.局部變量 > 其實局部變量我們一直在寫,他和成員變量的區別在于作用的范圍不一樣 > > 我們以上述的例子 * 成員變量:作用在全局中 * 局部變量:作用在Car類里 > 在內存中的存儲和位置 * 成員變量在堆內存中,因為對象的存在才在內存中存在 * 局部變量在棧內存中 ### 4.匿名對象 > 這是一個小知識點,匿名換句話其實就是沒有名字的意思 * 匿名對象是對象的簡化版 * 匿名對象兩種使用情況? * 當對對象方法僅進行一次調用的時候 * 匿名對象可以作為實際參數進行傳遞 > 我們用簡單的例子 ~~~ //正常的寫法 Car c = new Car(); c.num = 5; //匿名對象 new Car().num = 5; ~~~ > 可以看到我不起名字直接去更改num的值了,這就是匿名對象 > > 第二種使用方式實際參數去傳遞,其實在上面我用到了 ~~~ // 輸出顏色 System.out.println(new Car().color + "的小汽車"); ~~~ > 這樣就OK了 ### 5.封裝 > OK,終于說道我們的核心思想了Encapsulation > > 封裝的含義:是指隱藏的對象的屬性和實現細節,僅對外提供訪問方式 > > 好處 * 將變化隔開 * 便于使用 * 提高復用性 * 提高安全性 > 封裝原則 > > 將不需要對外提供的內容都隱藏起來;? > 把屬性都隱藏,提供對外訪問方式 > > 我們寫例子 ~~~ //公共的 類 類名 public class HelloJJAVA { // 公共的 靜態 無返回值 main方法 數組 public static void main(String[] str) { showString("我是封裝"); } /** * 封裝 * * @param str */ public static void showString(String str) { System.out.println(str); } } ~~~ > 這個就是最簡單的封裝了,你給我個字符串我就打印,過程你不必知道,函數本身就是一個最小的封裝體 ### 6.private > 私有的,怎么使用? ~~~ //公共的 類 類名 public class HelloJJAVA { // 公共的 靜態 無返回值 main方法 數組 public static void main(String[] str) { Person p = new Person(); p.age = 20; p.speak(); } } class Person { int age; // 說話方法 void speak() { System.out.println("我今年" + age + "歲"); } } ~~~ > 我們現在的代碼是這樣寫的,輸出的結果 ![這里寫圖片描述](http://img.blog.csdn.net/20160515134850023) > 這里我們直接訪問了arg,這里就存在了一個安全隱患,這里也就是用到private修飾符去修飾arg了 ![這里寫圖片描述](http://img.blog.csdn.net/20160515135149280) > 在這里,就看到一個錯誤提示了,因為我們用private修飾了之后,你就不能拿到了 > > private:私有,權限修飾符:用于修飾類中的成員(成員變量,成員函數)? > 注意的是,私有只在本類中有效 > > 那我們怎么去訪問呢?你既然私有了,就需要對外提供一個方法 ~~~ //公共的 類 類名 public class HelloJJAVA { // 公共的 靜態 無返回值 main方法 數組 public static void main(String[] str) { Person p = new Person(); // p.age = 20; p.setAges(20); p.speak(); } } class Person { // 私有 private int age; /** * 對外提供方法 * * @param a */ public void setAges(int a) { age = a; } // 說話方法 void speak() { System.out.println("我今年" + age + "歲"); } } ~~~ > 我們這樣做,也是可以的 ![這里寫圖片描述](http://img.blog.csdn.net/20160515135736190) > 但是我們一般也不會這樣做,我們有規范 ~~~ public int getAge() { return age; } public void setAge(int age) { this.age = age; } ~~~ > 所以我們的完整代碼應該是這樣寫 ~~~ //公共的 類 類名 public class HelloJJAVA { // 公共的 靜態 無返回值 main方法 數組 public static void main(String[] str) { Person p = new Person(); // p.age = 20; // p.setAges(20); p.setAge(20); p.speak(); } } class Person { // 私有 private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } // 說話方法 void speak() { System.out.println("我今年" + age + "歲"); } } ~~~ > 輸出的結果 ![這里寫圖片描述](http://img.blog.csdn.net/20160515140049396) > 但是你要切記,注意,私有僅僅是封裝的一種表現形式; > > 我們之所以對外提供訪問方式就是為了方便我們加入邏輯判斷語句,對訪問的數據進行操作,提高代碼的健壯性 ### 7.構造方法 > 特點 * 函數名和類名相同 * 不用定義返回值類型 * 不可以寫return語句 > 作用 * 給對象進行初始化 > 注意 * 默認構造函數的特點 * 多個構造函數是以重載的形式存在的 ~~~ //公共的 類 類名 public class HelloJJAVA { // 公共的 靜態 無返回值 main方法 數組 public static void main(String[] str) { Person p = new Person(); } } class Person { //構造方法 public Person() { System.out.println("我是構造方法"); } } ~~~ > 我們只要new了,就執行了構造方法 ![這里寫圖片描述](http://img.blog.csdn.net/20160515151422393) > 對象一建立就會調用與之對應的構造函數? > 構造函數的作用:可以用于對對象的初始化? > 構造函數的小細節,當一個類中沒有定義構造函數時,系統默認給該類加入一個空參數構造方法? > 當該類定義了構造方法,那就默認的沒有了,構造方法用了重載 ~~~ //公共的 類 類名 public class HelloJJAVA { // 公共的 靜態 無返回值 main方法 數組 public static void main(String[] str) { Person p = new Person(); Person p1 = new Person("我是小米"); Person p2 = new Person("我是小王", 20); } } class Person { // 構造方法 public Person() { System.out.println("我是構造方法"); } // 構造方法 public Person(String str) { System.out.println(str); } // 構造方法 public Person(String str, int age) { System.out.println("我是構造方法" + age); } } ~~~ > 就是這樣,我們輸出 ![這里寫圖片描述](http://img.blog.csdn.net/20160515152832555) ### 8.構造代碼塊 > 這里提個小知識點來完結本篇幅? > 我們看一段代碼 ~~~ //公共的 類 類名 public class HelloJJAVA { // 公共的 靜態 無返回值 main方法 數組 public static void main(String[] str) { Person p = new Person(); } } class Person { { System.out.println("我是構造方法"); } } ~~~ > 想知道他的運行結果是什么嗎 ![這里寫圖片描述](http://img.blog.csdn.net/20160515154454799) > 咦,為什么方法都沒有名字,就運行了,這個{}就是構造方法嗎?? > 如果你代用多個構造方法的話你會發現他掉歐勇多次,這個現象,我們可以這樣解釋 > > 構造代碼塊: * 作用就是給對象初始化 * 而且優先于構造方法 > 和構造方法的區別: * 構造代碼塊是給所有對象進行統一初始化 * 而構造函數是給對應的對象初始化 > 構造方法中定義的是不同對象共性的初始化內容(抽取) #### OK,我們下篇繼續,JAVA的思想概念性的東西需要吃透才行,所有博客就慢慢的更新 #### 熱愛Android可以加群:555974449 版權聲明:本文為博主原創文章,博客地址:http://blog.csdn.net/qq_26787115,未經博主允許不得轉載。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看