理解面向?qū)ο缶幊讨甹ava/javascript

可能,不已經(jīng)要往java方向?qū)W習(xí)了,最近項(xiàng)目里,涉及到很多前后臺(tái)交互的問題,自己本來只碰前臺(tái)的東西,但是有的功能實(shí)現(xiàn)需要后臺(tái)數(shù)據(jù)和方法的調(diào)用,然后又沒有現(xiàn)成的給你用,自己的工作又不能停下來不做,索性往后臺(tái)也看看,可能我自己總是太過樂觀,把什么東西都想的過于簡單,總之要一步步來了...

舉個(gè)實(shí)例:

對(duì)象實(shí)例化,有自己的屬性和方法


javascript中的面向?qū)ο?以及關(guān)于類的看法?

面向?qū)ο螅嫦驅(qū)ο笏且环N編程思想, 使用對(duì)象編程就是面向?qū)ο缶幊?,自己粗略的看法哈?/code>也是前端面試的必考題,關(guān)于它,我自己記憶猶新的就是封裝、繼承多態(tài),以及他們各自的特點(diǎn),缺點(diǎn)


接下來你對(duì)對(duì)象的理解?

我在想不知道多少小伙伴被萬物皆對(duì)象給坑著,我自己的看法就是現(xiàn)實(shí)中存在的事物,不管是看得見的看不見的,摸得著的摸不著的,都是對(duì)象,只要能和現(xiàn)實(shí)聯(lián)系起來的都可以稱之為對(duì)象;

而在我們自己程序轅的眼里,對(duì)象就是我們寫的一行行能夠表示現(xiàn)實(shí)社會(huì)中事物的代碼

這和計(jì)算機(jī)是一樣的,因?yàn)橛?jì)算機(jī)并不識(shí)別,我們需要轉(zhuǎn)換成相應(yīng)的二進(jìn)制機(jī)器代碼才能被計(jì)算機(jī)認(rèn)識(shí);

對(duì)象的生命周期:

對(duì)象從new關(guān)鍵字創(chuàng)建時(shí)生命周期開始;

對(duì)象在沒有任何引用指向時(shí)生命周期結(jié)束, 成為垃圾;

什么是匿名對(duì)象:

一個(gè)對(duì)象如果只使用一次, 就可以定義為匿名對(duì)象;

不用任何變量引用, 使用之后立即成為垃圾;


面向?qū)ο蟮囊粋€(gè)必問概念------>類

是用來描述對(duì)象的, 需要使用類來創(chuàng)建對(duì)象; 將一類事物的特征定義為成員變量, 將這類事物的行為定義為成員方法;


java中類的使用:

  • 定義

    • class 類名 { 類定義 };
  • 使用類創(chuàng)建對(duì)象

    • new 類名();

    • 對(duì)象會(huì)存儲(chǔ)在堆內(nèi)存中, 在創(chuàng)建的時(shí)候會(huì)將成員變量默認(rèn)初始化;

      • 堆內(nèi)存和棧內(nèi)存,自己去看吧;
    • 使用.變量名可以訪問對(duì)象的成員變量;

    • 使用.方法名()可以訪問對(duì)象的成員方法;


現(xiàn)在就不說javascript中的面向?qū)ο?,因?yàn)樵趈avascript中嚴(yán)格意義來說,是沒有一個(gè)類的概念,它不像C++、JAVA有類的概念,也沒有C里面的結(jié)構(gòu)體,只不過它有一個(gè)萬能的function,可以實(shí)現(xiàn)類的功能;

C語言中也不存在類,類是C++的概念;

C語言是面向過程的語言,而類是面向?qū)ο?/code>的概念,所以C語言是沒有類的概念的;

另外還要說的是,在C語言產(chǎn)生的時(shí)候,是沒有類的概念,也沒有面向?qū)ο蟮母拍?,這兩個(gè)概念都是后來才被提出來的,具體就是在C語言基礎(chǔ)上增加的面向?qū)ο蟮睦砟?,增加了類的定義,多態(tài)的實(shí)現(xiàn),但它明顯和C語言是有差別的,也就是后來的C++,可以說C++是C語言的延伸或者超集

從Java角度剖析面向?qū)ο蟮奶攸c(diǎn)?

1>. 繼承:

繼承是從已有的類得到繼承信息創(chuàng)建新類的過程。

  • 提供繼承信息的類被稱為父類(基類、超類);
  • 得到繼承信息的類被稱為子類(派生類);
  • 繼承讓變化中的軟件系統(tǒng)有了一定的可延續(xù)性,同時(shí)繼承也是封裝程序中可變因素的重要手段;

2>.封裝:

封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的接口。

  • 在類中編寫的方法是對(duì)實(shí)現(xiàn)細(xì)節(jié)的封裝;
  • 編寫一個(gè)類就是對(duì)數(shù)據(jù)和數(shù)據(jù)操作的封裝;

將一類事物的特征和行為定義在一起, 放在一個(gè)類中, 創(chuàng)建這個(gè)類的對(duì)象時(shí), 該對(duì)象就可以使用自己的特征和行為了;

3>.多態(tài):

多態(tài)是指允許不同子類型的對(duì)象對(duì)同一消息做出不同的響應(yīng)。

多態(tài)性允許以統(tǒng)一的風(fēng)格編寫程序,以處理種類繁多的已存在的類以及相關(guān)類。

該統(tǒng)一風(fēng)格可以由父類來實(shí)現(xiàn),根據(jù)父類統(tǒng)一風(fēng)格的處理,就可以實(shí)例化子類的對(duì)象。由于整個(gè)事件的處理都只依賴于父類的方法,所以日后只要維護(hù)和調(diào)整父類的方法即可,這樣降低了維護(hù)的難度,節(jié)省了時(shí)間。

在提到多態(tài)的同時(shí),不得不提到抽象類和接口,因?yàn)槎鄳B(tài)的實(shí)現(xiàn)并不依賴具體類,而是依賴于抽象類和接口。

  • 編譯時(shí)多態(tài):
    • 是指根據(jù)參數(shù)列表不同來區(qū)分不同的函數(shù),編譯之后就會(huì)變成兩個(gè)函數(shù),主要指方法的重載;
  • 運(yùn)行時(shí)多態(tài):
    • (動(dòng)態(tài)綁定),指在程序運(yùn)行期間判斷所引用對(duì)象的實(shí)際類型,根據(jù)實(shí)際類型判斷并調(diào)用相應(yīng)的方法和屬性;

要實(shí)現(xiàn)多態(tài)需要做兩件事:

  1. 方法重寫(子類繼承父類并重寫父類中已有的或抽象的方法);
  2. 對(duì)象造型(用父類型引用引用子類型對(duì)象,這樣同樣的引用調(diào)用同樣的方法就會(huì)根據(jù)子類對(duì)象的不同而表現(xiàn)出不同的行為);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評(píng)論 18 399
  • OOA:Object-Oriented Analysis面向?qū)ο蠓治龇椒?是在一個(gè)系統(tǒng)的開發(fā)過程中進(jìn)行了系統(tǒng)業(yè)務(wù)調(diào)...
    楚易楓閱讀 4,056評(píng)論 0 5
  • 原文鏈接:https://github.com/EasyKotlin 在前面的章節(jié)中,我們學(xué)習(xí)了Kotlin的語言...
    JackChen1024閱讀 922評(píng)論 0 3
  • 俗話說 冬吃蘿卜,夏吃姜,不找醫(yī)生開藥方。又到蘿卜豐收的季節(jié)。蘿卜既是一樣蔬菜,也是一種水果,生吃熟食皆適宜,尤其...
    樂享生活lx閱讀 397評(píng)論 0 2
  • 點(diǎn)擊上面的藍(lán)字關(guān)注我們哦! 終于憂傷的納蘭容若 文/李沐遙 圖/網(wǎng)絡(luò) 認(rèn)識(shí)納蘭容若,就覺得相識(shí)恨晚。恨未生于三百多...
    李沐遙閱讀 805評(píng)論 2 5

友情鏈接更多精彩內(nèi)容