ACCP8.0 java課程第二學期-關於類和對象

來源:互聯網
上載者:User

標籤:關係   重載   實現   java   構造方法   stat   getname   參數   入參   


本章重點:建構函式,封裝,重載
本章痛點:static關鍵字 this關鍵字

1.面向過程與物件導向的區別
面向過程是在Main函數中完成功能,從開始到結束,一步一步的實現功能
物件導向是各個類之間協同工作,相互影響,需要考慮哪些類,有什麼屬性和方法


2.如何使用物件導向進行編程
2.1 抽象出類(找名詞)
2.2 定義屬性(找特徵)
2.3 定義方法(找行為或者動詞)
 1 / 2 * 3 * 現在有這樣一個例子,小張到買了一個冰淇淋,他挺高興的 4 *   1.首先我們找名詞發現出小張(人),冰淇淋(物)這兩個類 5 *   2.第二步找人有哪些特徵 我們發現了名字(小張),滿意度(高興)的特徵  6 *   3.第三步發現人有哪些行為 我們通過樣本發現了“買”這個動作    7 */ 8 public class Person{ 9     private String name;//名字 10     private  int love;//滿意度  11 12     public void setName(String name){13         this.name = name;14     }15     16     public String getName(){17         18         return this.name19     }20     21     /**22     *  購買的方法23     */24     public void buy(SomeThing st){25 26     }27      28 }29 class Something{30    31   private String name;32   33   public String getName(){34       return name;    35   }  36 }

 




3.建構函式
3.1 用於類進行初始化的相關操作
3.2 無傳回值
3.3 如果類不定義建構函式,都會提供一個預設的建構函式
3.4 建構函式支援重載
 1 /** 2  * Created by niechen on 17/4/18. 3  */ 4 public class Test3 { 5  6     public Test3() { 7         System.out.println("這個是預設的建構函式"); 8     } 9 10     public Test3(int number) {11         System.out.println("這是一個number建構函式");12     }13 14     public Test3(String text) {15         this(10);16         System.out.println("這是一個Text建構函式");18     }19 20     public Test3(String... text) {21         System.out.println("這也是一個建構函式");22     }23   //該方法有傳回值 所以只是個普通的方法24     public void Test3() {25         System.out.println("這隻是一個普通的方法");26     }27 28     public static void main(String[] args) {29         new Test3();30     }31 }

 



4.static關鍵字
4.1 static關鍵字可以定義在成員變數,方法,靜態地區及內部類上
4.2 static方法不能直接調用非靜態成員的屬性與方法
4.3 static可用於所有對象的共用資料
4.4 類載入的時候,就被賦值了
4.5 靜態記憶體-》靜態代碼塊-》構造方法 (多個靜態代碼塊按照順序進行執行)
/**
* 範例程式碼
* * Created by niechen on 17/4/18. */public class Test4 { public static int age = 10; public static int number; static { age--; System.out.println("靜態代碼塊中輸出age:" + age); } static { age--; System.out.println("第二個靜態代碼塊中輸出age:" + age); } Test4() { number++; System.out.println("建構函式裡輸出age:" + age); } public static int test() { System.out.println(age); return age; } public static void main(String[] args) { new Test4(); new Test4(); Test4.test(); System.out.println("建立對象的個數:" + Test4.number); } public static class Test2 { }
輸出結果:靜態代碼塊中輸出age:9第二個靜態代碼塊中輸出age:8建構函式裡輸出age:8建構函式裡輸出age:88建立對象的個數:2

 



5.this關鍵字
5.1 可以區分於方法參數與成員變數
5.2 this指的是當前的引用對象,在記憶體中開闢一個記憶體區塊引述自己
5.3 用於在建構函式中調用其他建構函式,必須放在第一行代碼中
 1 package org.lyrk.accp8.s2.chapter.one; 2  3 /** 4  * Created by niechen on 17/4/18. 5  */ 6 public class Test5 { 7     private int number; 8     private String name; 9 10     public Test5(int number, String name) {11         this.name = name;//this關鍵字作用之一當參數與屬性名稱相同時,區分內部屬性還是入參參數12         this.number = number;13     }14 15     public Test5() {16         this(10, "你好");//this關鍵字作用之一調用本類中的其他建構函式17         System.out.println("這個是預設建構函式");18     }19 20     public Test5 setName(String name) {21         this.name = name;22         return this;//this關鍵字作用之一返回當前的引用對象23     }24 25     public Test5 setNumber(int number) {26         this.number = number;27         return this;28     }29 30     public static void main(String[] args) {31         Test5 test5 = new Test5().setName("張三").setNumber(10);32         System.out.println(test5.name);33         System.out.println(test5.number);34     }35 36 }

 



6.關於常量
6.1 用於描述無需改變的數值
6.2 它是靜態不可變的,使用static final進行修飾 (書上只用final修飾)

7.關於封裝
7.1 對內實現具體細節,對外提供方法供於調用
7.2 內部成員變數用private修飾符修飾,對外提供getter setter方法
7.3 public > protected(第二章會講到) > package(不加存取修飾詞) > private

8.關於重載
8.1 必須在同一個類,方法名相同,參數列表不同(方法參數的個數或參數類型不同),與方法傳回值和方法修飾符沒有任何關係
8.2 重載匹配方法規則由精確到模糊,直到找到合適的方法為止
package org.lyrk.accp8.s2.chapter.one;/** * Created by niechen on 17/4/17. */public class Test8 {    public static void test(int t1) {        System.out.println(t1 + "int");    }    public static void test(char t1) {        System.out.println(t1 + "char");    }    public static void test(double t1, double t2) {        System.out.println(t1 + t2);    }    public static int test(String c,String s){return 0;}    //public static int test(int t1){return 0;}    public static void test(int t1, double t2) {        System.out.println(t1 - t2);    }    public static void test(Integer t1, double t2) {        System.out.println("Integer:" + (t1 - t2));    }    public static void main(String[] args) {        test(10,2.0);        test(‘c‘,2);    }}輸出結果:8.097.0

 

ACCP8.0 java課程第二學期-關於類和對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.