前言 ? ? ??
唉唉唉濒生,看啥呢,這可沒有什么美女萌妹子幔欧,我說的對象是第二次“面向?qū)ο蟆弊镏危诙握劦矫嫦驅(qū)ο蠛喼笔钦劦搅耸煜さ哪吧税±錾煜ざc陌生啊>跻濉雁社!
? ? ? 下面我們來說說為什么是先熟悉。因為我在大學(xué)大一的時候接觸到了C語言晒骇,那時候還是面向過程的初級學(xué)習(xí)霉撵,但是卻根本就不知道什么是面向過程,知道聽到班里一位大神講到:“哎洪囤,這C語言都是講到最基礎(chǔ)的面向過程編寫徒坡,現(xiàn)在市場主流都是面向?qū)ο罅耍冶冗@玩意簡單多了瘤缩±辏”聽到這個我當(dāng)時就對我們這位同學(xué)的感覺就是:我曹!這絕對是 位大神鞍 锦溪!這時,“面向?qū)ο蟆斑@個詞語第一次 出現(xiàn)在了我的生活中铐殃!
? ? ? 然而海洼,這時的面向?qū)ο笤谖业囊庾R中還只是個初步印象,可是富腊,等到后來的學(xué)習(xí)中,我們的老師多次提到面向?qū)ο笥蛘剩敝廖覀兇蠖_始了“初學(xué)Java”這門課程的時候赘被,我終于算是第一次真正接觸到了面向?qū)ο螅緛硪詾槟苷嬲议_他神秘的面紗了肖揣,然而好景不長民假,真正到了講面向?qū)ο蟮母拍畹臅r候,我卻聽的是懵懵懂懂龙优!之后一直是這種狀態(tài)羊异,一學(xué)期下來,由于面向?qū)ο鬀]搞明白彤断,Java就學(xué)的跟沒學(xué)過一樣野舶,簡直失望透頂!T籽谩平道!
!供炼!----------------->R晃荨窘疮!一直到,我遇到了python,這一門神奇的課程冀墨,還有一位闸衫,神奇的老師,兩相組合之下诽嘉,我第二次遇到的面向?qū)ο蟪蹋暗拿曰缶谷恢苯佑卸狻Mㄟ^一天的學(xué)習(xí)之后含懊,我就理解了面向?qū)ο蟮木幊趟枷肷矶O胛掖髮W(xué)學(xué)過了Java兩年之后的對象恐懼癥直接就解除了。這真的是讓人感到意外的驚喜2砬恰酥筝!
? ? 重點來啦
? ? ?下面就讓我們來總結(jié)一下,什么是面向?qū)ο蟪牛裁从质穷惡俑琛ο螅琍ython中的對象又怎么表示茁影,他們的區(qū)別又是什么宙帝,以及怎么創(chuàng)建他們!募闲!
一般情況下:
? ? (1)對象
? ? ?對象是人們要進行研究的任何事物步脓,從最簡單的整數(shù)到復(fù)雜的飛機等均可看作對象,它不僅能表示具體的事物浩螺,還能表示抽象的規(guī)則靴患、計劃或事件。
? ? ?(2)對象的狀態(tài)和行為
? ? ?對象具有狀態(tài)要出,一個對象用數(shù)據(jù)值來描述它的狀態(tài)鸳君。
? ? ?對象還有操作,用于改變對象的狀態(tài)患蹂,"操作”就是對象的行為或颊。
? ? ?對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中
? ? ?(3)類
? ? ?具有相同或相似性質(zhì)的對象的抽象就是類传于,類似于一系列事物的統(tǒng)稱囱挑。因此,對象的抽象是類格了,類的具體化就是對象看铆,也可以說類的實例是對象。例如說盛末,“人”弹惦,這只是一個概念否淤,而如果具體到某個人的名字的話,就是具體的 “對象”了棠隐。
? ? ?類具有屬性石抡,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性助泽,其實也就是描述一下這個類或者這類東西都有什么特征啰扛。
? ? ?類具有操作,它是對象的行為的抽象嗡贺,用操作名和實現(xiàn)該操作的方法來描述隐解。
? ? ?(4)類的結(jié)構(gòu)
? ? ?在客觀世界中有若干類,這些類之間有一定的結(jié)構(gòu)關(guān)系诫睬。通常有兩種主要的結(jié)構(gòu)關(guān)系煞茫,即一般--具體結(jié)構(gòu)關(guān)系,整體--部分結(jié)構(gòu)關(guān)系摄凡。
? ? ?①一般——具體結(jié)構(gòu)稱為分類結(jié)構(gòu)续徽,也可以說是“或”關(guān)系,或者是“is a”關(guān)系亲澡。
? ? ?②整體——部分結(jié)構(gòu)稱為組裝結(jié)構(gòu)钦扭,它們之間的關(guān)系是一種“與”關(guān)系,或者是“has a”關(guān)系床绪。
? ? ?(5)消息和方法
? ? ?對象之間進行通信的結(jié)構(gòu)叫做消息客情。在對象的操作中,當(dāng)一個消息發(fā)送給某個對象時会涎,消息包含接收對象去執(zhí)行某種操作的信息裹匙。發(fā)送一條消息至少要包括說明接受消息的對象名、發(fā)送給該對象的消息名(即對象名末秃、方法名)。一般還要對參數(shù)加以說明籽御,參數(shù)可以是認識該消息的對象所知道的變量名练慕,或者是所有對象都知道的全局變量名。
? ? ?類中操作的實現(xiàn)過程叫做方法技掏,一個方法有方法名铃将、參數(shù)、方法體哑梳。
再說Python中的面向 對象
表示:? ? ? ? ?
? ? ? ? ? ?python中劲阎,通過類和對象,以及對象之間的互相調(diào)用完成一定的功能鸠真,來體現(xiàn)面向?qū)ο蟮木幊趟枷?/p>
怎么定義一個類悯仙?
? ? ? a)類一般有幾個組成部分:類型名稱龄毡、屬性、方法
? ? ? b)通過class關(guān)鍵字锡垄,來定義一個自定義類型
? ? ? c)通過__init__()函數(shù)沦零,來初始化類的屬性數(shù)據(jù)
? ? ? d)通過普通函數(shù),定義類的行為方法
2.怎么創(chuàng)建對象货岭?
? ? ? a)和執(zhí)行函數(shù)一樣路操,直接通過類的名稱,來創(chuàng)建對象千贯,如:u = Users()
3.創(chuàng)建的對象屯仗,怎么使用對象的屬性?
? ? ? a)對象的屬性搔谴,可以直接通過對象的引用變量.屬性名稱來使用魁袜,如u.username
4.創(chuàng)建的對象,怎么使用對象的方法己沛?
? ? ? a)對象的方法慌核,可以直接通過對象的引用變量.方法名稱()來調(diào)用方法
5.創(chuàng)建對象的過程是什么垮卓?
? ? ? a)首先粟按,創(chuàng)建對象,會調(diào)用對象的__new__()函數(shù)霹粥,來申請內(nèi)存庙曙,創(chuàng)建對象
? ? ?b)其次捌朴,給創(chuàng)建好的獨享,初始化對象的數(shù)據(jù)左驾,自動調(diào)用__init__()函數(shù)安岂,給對象的屬性賦值
6.創(chuàng)建好的對象嗜闻,賦值給了一個變量,變量是什么類型翠肘?存放的是什么數(shù)據(jù)束倍?
? ? ?a)變量=類名稱()創(chuàng)建了一個對象,將對象的引用地址邮旷,賦值給了變量
? ? ?b)變量(內(nèi)存地址)à堆內(nèi)存中的對象
? ? ?c)type(變量)à類類型