Java之理解類(lèi)和對(duì)象

編程的本質(zhì)是邏輯,編程思維的培養(yǎng)很重要。首先我們要理解面向過(guò)程和面向?qū)ο笥惺裁磪^(qū)別:
面向過(guò)程:
面向過(guò)程是一種以“事件”為中心的編程思想,把解決問(wèn)題的過(guò)程拆成一個(gè)個(gè)方法彩匕,通過(guò)一個(gè)個(gè)方法的執(zhí)行解決問(wèn)題。需要實(shí)現(xiàn)一個(gè)功能的時(shí)候媒区,看重的是開(kāi)發(fā)的步驟和過(guò)程驼仪,
面向?qū)ο螅?/strong>
面向?qū)ο笫且环N以“對(duì)象”為中心的編程思想掸犬,把要解決的問(wèn)題分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟绪爸,而是為了描敘某個(gè)對(duì)象在整個(gè)解決問(wèn)題的步驟中的屬性和行為湾碎。
當(dāng)需要實(shí)現(xiàn)一個(gè)功能的時(shí)候,看重的并不是過(guò)程和步驟奠货,而是關(guān)心的是對(duì)象介褥,對(duì)象能做什么。

面向?qū)ο蠛兔嫦蜻^(guò)程最本質(zhì)的區(qū)別在于考慮問(wèn)題的出發(fā)點(diǎn)不同递惋,面向過(guò)程是以事件流程為考慮問(wèn)題的出發(fā)點(diǎn)柔滔,而面向?qū)ο髣t是以對(duì)象為考慮問(wèn)題的出發(fā)點(diǎn)。
面向?qū)ο蟪绦蛟O(shè)計(jì)中代碼間的相關(guān)性低(低耦合特性)萍虽,使得代碼很容易被復(fù)用和擴(kuò)展睛廊,面向?qū)ο箝_(kāi)發(fā)的程序一般更易維護(hù)、易復(fù)用贩挣、易擴(kuò)展。面向過(guò)程的代碼重用性低没酣、擴(kuò)展能力差王财。

現(xiàn)在主流的思想是面向?qū)ο螅鴮?shí)際的情況是軟件設(shè)計(jì)的宏觀層面是面向?qū)ο蟮脑1悖⒂^層面依然是面向過(guò)程的(方法內(nèi)部的代碼還是按照步驟編寫(xiě)的)绒净。

※面向?qū)ο蟪绦蛟O(shè)計(jì)(Object Oriented Programming,OPP):

面向?qū)ο笕筇匦裕?br> 1.封裝 偿衰、 2.繼承 挂疆、 3.多態(tài)

1.對(duì)象

1.1.什么是對(duì)象

萬(wàn)事萬(wàn)物皆對(duì)象,對(duì)象強(qiáng)調(diào)的是一個(gè)具體的個(gè)體下翎,例如:楊樹(shù)就不是對(duì)象缤言,我家門(mén)前第一顆楊樹(shù)就是對(duì)象。

1.2.對(duì)象由什么構(gòu)成

對(duì)象由狀態(tài)行為構(gòu)成视事。
對(duì)象的狀態(tài)是指對(duì)象的數(shù)據(jù)胆萧,對(duì)象的狀態(tài)由變量表示,也叫對(duì)象的屬性俐东。
對(duì)象的行為是指對(duì)象的功能跌穗,對(duì)象的行為由方法表示。

1.3.對(duì)象是怎么創(chuàng)建的

對(duì)象是由類(lèi)實(shí)例化時(shí)創(chuàng)建的虏辫,因此創(chuàng)建對(duì)象必須先定義類(lèi)蚌吸。

2.類(lèi)

2.1.什么是類(lèi)

類(lèi)是具有相同的狀態(tài)和相同的行為的一組對(duì)象的集合。

2.2.類(lèi)的構(gòu)成

類(lèi)是由屬性和方法構(gòu)成的砌庄。

※類(lèi)和對(duì)象是什么關(guān)系

類(lèi)和對(duì)象的關(guān)系就如同模具和用這個(gè)模具制作出來(lái)的物品之間的關(guān)系羹唠。
一個(gè)類(lèi)給出它的全部對(duì)象的一個(gè)統(tǒng)一的定義奕枢,而它的每個(gè)對(duì)象則是符合這種定義的一個(gè)實(shí)體(也稱(chēng)作實(shí)例),因此類(lèi)和對(duì)象的關(guān)系就是抽象和具體的關(guān)系肉迫。
類(lèi)是對(duì)象的模板验辞,對(duì)象是類(lèi)的的具體實(shí)例。類(lèi)中定義了什么屬性和方法喊衫,由這個(gè)類(lèi)實(shí)例化的對(duì)象就有什么屬性和方法跌造。
類(lèi)是一次性定義,對(duì)象可以多次創(chuàng)建族购。

  • 類(lèi)是對(duì)某一類(lèi)事物的抽象描述壳贪,不是具體的個(gè)體。
  • 對(duì)象是對(duì)某一事物的具體描述寝杖,是具體的個(gè)违施。

3.定義類(lèi)

3.1.定義類(lèi)的語(yǔ)法格式

public class 類(lèi)名 {
    成員變量聲明;//即屬性
    成員方法聲明;//即行為
}

具體:

public class 類(lèi)名 {
    //可編寫(xiě)0至n個(gè)屬性
    數(shù)據(jù)類(lèi)型 變量名1;
    數(shù)據(jù)類(lèi)型 變量名2瑟幕;
    
    //可編寫(xiě)0至n個(gè)方法
    修飾符 返回值類(lèi)型 方法名(參數(shù)){
        執(zhí)行語(yǔ)句;
    }
}

注意:
● class是聲明類(lèi)的關(guān)鍵字
● public類(lèi)的類(lèi)名必須和類(lèi)所在文件的文件名一致
●如果不是public類(lèi)磕蒲,那么類(lèi)名與類(lèi)所在的文件名可以不一致
●類(lèi)名的命名規(guī)范是:帕斯卡命名法,因此類(lèi)名首字母大寫(xiě)只盹。
示例:

public class Student {
    //類(lèi)的屬性(類(lèi)的狀態(tài))
    String name; 
    int score;
    String no;
    //類(lèi)的方法(類(lèi)的行為)
    public void play(){
        System.out.printf("我的名字是%s,我的成績(jī)是%d,我的學(xué)號(hào)是%s",name,score,no);
    }
}

4.實(shí)例化對(duì)象

通過(guò)類(lèi)創(chuàng)建對(duì)象的過(guò)程稱(chēng)為類(lèi)的實(shí)例化辣往。實(shí)例化的結(jié)果是產(chǎn)生了一個(gè)實(shí)例,實(shí)例也叫對(duì)象殖卑。

4.1.創(chuàng)建對(duì)象(實(shí)例化對(duì)象)

一個(gè)對(duì)象稱(chēng)為類(lèi)的一個(gè)實(shí)例站削,是類(lèi)一次實(shí)例化的結(jié)果。
創(chuàng)建對(duì)象的語(yǔ)法格式

類(lèi)名 對(duì)象名 = new 類(lèi)名();

示例:

Student s1 =new Student();
Student s2 =new Student();

1.new是關(guān)鍵詞孵稽,稱(chēng)為實(shí)例化许起,同時(shí)也是分配內(nèi)存的意思。
2.左邊的類(lèi)名為對(duì)象的數(shù)據(jù)類(lèi)型菩鲜。
3.右邊的類(lèi)名()稱(chēng)為類(lèi)的構(gòu)造方法园细。

一個(gè)對(duì)象由兩部分構(gòu)成,一個(gè)是對(duì)象的指針(也稱(chēng)對(duì)象的引用)接校,二是對(duì)象的實(shí)例珊肃。
內(nèi)存分配演示

內(nèi)存圖

4.2.使用對(duì)象

對(duì)象調(diào)用屬性和方法是使用成員運(yùn)算符"."來(lái)完成的。
使用對(duì)象的語(yǔ)法格式

   對(duì)象名.屬性   //引用對(duì)象的屬性
   對(duì)象名.方法名  //引用對(duì)象的方法

4.2.1.對(duì)象調(diào)用屬性

public class Student {
    String name;
    int score;
    String no;

    public static void main(String[] args) {
        Practice s1 = new Practice();
        s1.name = "haha";
        s1.score = 78;

        Practice s2 = new Practice();
        s2.name = "yaya";
        s2.score = 98;
    }
}
內(nèi)存圖

4.2.2.對(duì)象調(diào)用方法

public class  Student {
    String name;
    int score;
    String no;
    public void play(){
        System.out.printf("我的名字是%s,我的成績(jī)是%d,我的學(xué)號(hào)是%s",name,score,no);
    }

    public static void main(String[] args) {
        Student s1 = new  Student();
        s1.name = "haha";
        s1.score = 78;
        s1.play();

        Student s2 = new  Student();
        s2.name = "yaya";
        s2.score = 98;
        s2.play();
    }

運(yùn)行結(jié)果:

我的名字是haha,我的成績(jī)是78,我的學(xué)號(hào)是null
我的名字是yaya,我的成績(jī)是98,我的學(xué)號(hào)是null

4.2.3.對(duì)象數(shù)組

示例:
需求:
1.班級(jí)里有5名學(xué)生馅笙,輸入每名學(xué)生的姓名和總成績(jī)伦乔。
2.根據(jù)學(xué)生總成績(jī)從高到低排名,顯示學(xué)生名次董习、姓名烈和、總成績(jī)。
分析:
1.有哪些對(duì)象皿淋?有學(xué)生對(duì)象招刹,有班級(jí)對(duì)象
2.對(duì)象有什么屬性和方法恬试?
①.學(xué)生有姓名,成績(jī)的屬性疯暑,學(xué)生不需要方法
②.班級(jí)有多名學(xué)生的屬性训柴,班級(jí)有排序方法,輸出的方法
代碼:
1:創(chuàng)建學(xué)生類(lèi)

public class Student {
    //屬性
    String name;
    int score;
    //構(gòu)造
    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }
}

2.創(chuàng)建班級(jí)類(lèi)

public class ClassInfo {
    //屬性
    Student []stus = null;

    //構(gòu)造函數(shù)初始化班級(jí)大小
    public ClassInfo(int size){
        this.stus = new Student[size];
    }

    //排序方法
    public void sort(){
        if(this.stus.length==0){
            return;
        }
        for (int i = 0; i < this.stus.length-1; i++) {
            for (int j = 0; j < this.stus.length - i - 1; j++) {
                if(this.stus[j].score<this.stus[j+1].score){
                    Student temp = this.stus[j];
                    this.stus[j] = this.stus[j+1];
                    this.stus[j+1] = temp;
                }
            }
        }
    }

    //輸出方法
    public void print(){
        for (int i = 0; i < stus.length; i++) {
            System.out.printf("姓名:%s,成績(jī)%d妇拯,名次:%d",stus[i].name,stus[i].score,(i+1));
            System.out.println();
        }
    }
}

3.創(chuàng)建測(cè)試類(lèi)

public class Test {
    public static void main(String[] args) {
        //1:創(chuàng)建5個(gè)學(xué)生
        Student s1 = new Student("學(xué)生1",60);
        Student s2 = new Student("學(xué)生2",80);
        Student s3 = new Student("學(xué)生3",90);
        Student s4 = new Student("學(xué)生4",65);
        Student s5 = new Student("學(xué)生5",70);

        //2:創(chuàng)建班級(jí)
        ClassInfo classInfo = new ClassInfo(5);
        classInfo.stus[0] = s1;
        classInfo.stus[1] = s2;
        classInfo.stus[2] = s3;
        classInfo.stus[3] = s4;
        classInfo.stus[4] = s5;

        //3:排序
        classInfo.sort();

        //4:輸出
        classInfo.print();
    }
}

運(yùn)行結(jié)果:

姓名:學(xué)生3,成績(jī)90幻馁,名次:1
姓名:學(xué)生2,成績(jī)80,名次:2
姓名:學(xué)生5,成績(jī)70越锈,名次:3
姓名:學(xué)生4,成績(jī)65仗嗦,名次:4
姓名:學(xué)生1,成績(jī)60,名次:5

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末甘凭,一起剝皮案震驚了整個(gè)濱河市稀拐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丹弱,老刑警劉巖德撬,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異躲胳,居然都是意外死亡蜓洪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)泛鸟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蝠咆,“玉大人踊东,你說(shuō)我怎么就攤上這事北滥。” “怎么了闸翅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵再芋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我坚冀,道長(zhǎng)济赎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任记某,我火速辦了婚禮司训,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘液南。我一直安慰自己壳猜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布滑凉。 她就那樣靜靜地躺著统扳,像睡著了一般喘帚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咒钟,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天吹由,我揣著相機(jī)與錄音,去河邊找鬼朱嘴。 笑死倾鲫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腕够。 我是一名探鬼主播级乍,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帚湘!你這毒婦竟也來(lái)了玫荣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤大诸,失蹤者是張志新(化名)和其女友劉穎捅厂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體资柔,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡焙贷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贿堰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辙芍。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖羹与,靈堂內(nèi)的尸體忽然破棺而出故硅,到底是詐尸還是另有隱情,我是刑警寧澤纵搁,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布吃衅,位于F島的核電站,受9級(jí)特大地震影響腾誉,放射性物質(zhì)發(fā)生泄漏徘层。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一利职、第九天 我趴在偏房一處隱蔽的房頂上張望趣效。 院中可真熱鬧,春花似錦猪贪、人聲如沸跷敬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)干花。三九已至妄帘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間池凄,已是汗流浹背抡驼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工肿仑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留致盟,地道東北人尤慰。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像伟端,于是被迫代替她去往敵國(guó)和親杯道。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容