Java學(xué)習(xí)筆記-類的定義

          Posted on 2006-06-27 17:19 多力宇揚(yáng) 閱讀(303) 評(píng)論(0)  編輯  收藏 所屬分類: Core Java
          從今天開始從零學(xué)習(xí)JAVA,希望可以認(rèn)識(shí)到更多的朋友,可以讓自己的JAVA之路走得更為順利一些!買了幾本書來看也聽了幾接課,覺得JAVA很吸引我,我想我可以走得更遠(yuǎn)的.自信是最重要的.
          ??? OOP(Object Oriented Programming)描述的是對(duì)象與對(duì)象之間的相互作用.聽老師將面向過程與面向?qū)ο蟮淖畲髤^(qū)別是: 過程化程序設(shè)計(jì)先確定算法,再確定數(shù)據(jù)結(jié)構(gòu),再確定運(yùn)算.面向過程編程,習(xí)慣于先建立數(shù)據(jù)結(jié)構(gòu)存放數(shù)據(jù)并定義方法(函數(shù))來操作數(shù)據(jù);而面向?qū)ο蟮膭t是構(gòu)建一個(gè)模型,將數(shù)據(jù)與方法組織在一起.
          ??? 我們可以把現(xiàn)實(shí)世界的事物抽象為對(duì)象.對(duì)象一般都有兩個(gè)特征:狀態(tài)(Status),行為(Behavior).軟件的對(duì)象概念是由顯示世界對(duì)象抽象而來.把現(xiàn)實(shí)世界的狀態(tài)保存軟件對(duì)象的變量中;現(xiàn)實(shí)世界對(duì)象的行為通過軟件對(duì)象的方法(函數(shù))來實(shí)現(xiàn).
          ??? 我們把相似的對(duì)象劃分成一個(gè)類.在軟件中類就是一個(gè)模板,它定義了通用于一個(gè)特定種類的所有對(duì)象的狀態(tài)(變量)和行為(方法).類是創(chuàng)建對(duì)象的模板,對(duì)象是類的實(shí)例.
          ??? 面向?qū)ο缶幊痰碾y點(diǎn)在于思路的轉(zhuǎn)變.我們通常習(xí)慣與考慮解決問題的方法,而不是抽象成對(duì)象再去解決它.
          ?類的構(gòu)造方法
          * 構(gòu)造方法的名字和類名相同,并且沒有返回值.
          * 構(gòu)造方法主要用于定義類的初始化狀態(tài).
          * 我們不能直接調(diào)用構(gòu)造方法,必須通過new關(guān)鍵字來自動(dòng)調(diào)用,從而創(chuàng)建類的實(shí)例.
          * Java的類都要求有構(gòu)造方法,如果沒有定義構(gòu)造方法,Java編譯器會(huì)提供一個(gè)缺省的構(gòu)造方法,也就是不參數(shù)的構(gòu)造方法.
          方法的重載(overload)
          ?重載構(gòu)成的條件:方法的名稱相同,但參數(shù)類型或參數(shù)個(gè)數(shù)不同,才能構(gòu)成方法的重載.
          code:
          class Point
          {
          ?int x,y;
          ?/*
          ? *帶參數(shù)的構(gòu)造方法和不帶參數(shù)的構(gòu)造方法就構(gòu)成了方法(函數(shù))的重載
          ?*/
          ?Point(int a,int b)
          ?{
          ? x=a;
          ? y=b;
          ?}
          ?Point()
          ?{
          ?
          ?}
          ?void output()
          ?{
          ? System.out.println(x);
          ? System.out.println(y);
          ?}
          ?public static void main(String[] args)
          ?{
          ? //調(diào)用不帶參數(shù)的構(gòu)造方法
          ? //Point p=new Point();
          ? //pt.x=10;
          ? //pt.y=20;
          ? //p.output();
          ? Point p1=new Point(3,3); //調(diào)用帶參數(shù)的構(gòu)造方法
          ? p1.output();
          ?}
          }
          特殊變量this
          * this變量代表對(duì)象本身
          * 當(dāng)類中有兩個(gè)同名變量,一個(gè)屬于類(類的成員變量),一個(gè)屬于某個(gè)特定的方法(方法中的局部變量),使用this區(qū)分成員變量和局部變量.
          * 使用this簡(jiǎn)化構(gòu)造函數(shù)的調(diào)用
          code:
          class Point
          {
          ?int x,y;
          ?/*
          ? *帶參數(shù)的構(gòu)造方法和不帶參數(shù)的構(gòu)造方法就構(gòu)成了方法(函數(shù))的重載
          ?*/
          ?Point(int a,int b)
          ?{
          ? x=a;
          ? y=b;
          ?}
          ?Point()
          ?{
          ? this(1,1);
          ?}
          ?void output()
          ?{
          ? System.out.println(x);
          ? System.out.println(y);
          ?}
          ?/*output()方法定義的形參與成員變量同名了,
          ?*那么在output()里就看不到成員變量的x,y了,它被隱藏了.
          ?*/
          ?void output(int x, int y)
          ?{
          ? this.x=x;
          ? this.y=y;
          ?}
          ?public static void main(String[] args)
          ?{
          ? Point pt=new Point(3,3);
          ? pt.output(5,5);
          ? pt.output();
          ?}
          }
          一個(gè)類所有的實(shí)例(對(duì)象)調(diào)用的成員方法在內(nèi)存中只有一份拷貝,盡管在內(nèi)存中可能有多個(gè)對(duì)象,而數(shù)據(jù)成員在內(nèi)的沒個(gè)對(duì)象中都存在著一份拷貝.this變量允許相同的實(shí)例方法為不同的對(duì)象工作.每當(dāng)調(diào)用一個(gè)實(shí)例方法時(shí),this變量被設(shè)置成引用該實(shí)例方法的特定的類的對(duì)象.方法的代碼接著會(huì)與this所代表的對(duì)象的特定數(shù)據(jù)建立關(guān)聯(lián).
          主站蜘蛛池模板: 汉沽区| 汉源县| 阆中市| 遂宁市| 扶沟县| 巴青县| 宜春市| 会宁县| 波密县| 永嘉县| 晋中市| 汝南县| 额济纳旗| SHOW| 新巴尔虎右旗| 通道| 苗栗县| 建昌县| 嘉兴市| 宿州市| 长沙县| 五华县| 黔江区| 汤原县| 河北区| 汕头市| 徐水县| 安顺市| 岳阳县| 永丰县| 巴林左旗| 大关县| 遂昌县| 赤峰市| 建水县| 奈曼旗| 汉寿县| 普兰县| 萝北县| 孟州市| 富宁县|