国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

1、面向對象編程

anonymoussf / 1891人閱讀

摘要:利用計算機來對事物進行抽象并使用便是面向對象編程。被繼承的類稱為基類,繼承基類的新類稱為導出類。所以可以將導出類的實例對象賦給基類,作為一個基類對象使用。所以在一個基類對象上調用導出類的新功能者并沒有什么意義,也不符合現實。

從崛起的智人到被蘋果砸中的牛頓再到現在的你,一直在思考“這是個怎么樣的世界?”
一、世上本沒有蘋果

看到一張蘋果的圖片,腦海里自然浮現“圖片上的是一個蘋果”,為什么會稱蘋果為‘蘋果’?

世界上所有的物質都是客觀存在的,基于事物固有的特性,人類用自己方式將其抽象為具體的概念并用一些媒介表達了出來,這些媒體如語言、繪畫、手語等。

將客觀存在事物抽象為我們自己的概念,便能方便日常的交流和對事物的研究利用。對事物進行抽象定義的質量越高,我們使用起來越方便。在日常生活中,當提及到這些事物時我們對這些事物的特征、功能也總是‘心中有數’。

我們解決問題的能力直接取決于我們對事物抽象的質量。

二、使用計算機來表達事物的抽象

計算機也是我們表達和使用抽象的一種有效媒介。

進行程序設計的目的就是解決實際生活中一些的問題,程序總是和實際息息相關的。將實際問題中元素用計算機的方式來進行抽象定義,然后利用這些抽象來解決問題。這樣我們直面的便問題空間中的抽象,在解決問題是基于問題的結構,而不是基于計算機結構。

不使用面向對象時,可能寫出下面的代碼(偽代碼):

/*將一個用戶信息保存到文件*/
userName = "xxxx";
userAge = "18";
userTel = "11111";
fileName = "xxxxxx";
// 保存信息到文件
file = open(fileName);
file.write(userName);
file.write(userAge);
file.write(userTel);
file.close();

這樣的代碼用戶相關信息在碼層面并沒有提現出強烈的相關,他們都只是一個個獨立的變量。只有我們自己知道他們是‘一起’的,并實時維護他的關系。在保存信息到文件時,總時要打開、寫入、關閉,對于很多個信息就繁瑣且復雜。

使用面向對象來解決這個問題,先將用戶信息抽象出來并將抽象的定義的類放到一個多帶帶的文件中:

class UserInfo {
    name;
    age;
    tel;
    FILE_NAME = "xxxxxx";
    
    function saveUserInfo() {
        file = open(FILE_NAME);
        file.write(userName);
        file.write(userAge);
        file.write(userTel);
        file.close();
    }
}

這里,用戶的各個信息一目了然的他們是‘一起’的,并且將寫的操作也進行了抽象封裝。在解決問題的代碼文件中使用定義好的抽象:

userUnfo = new UserInfo();
userInfo.name = "xxx";
userInfo.age = 18;
userInfo.tel = "11111";
userinfo.saveUserInfo();

這一部分代碼才是我們真正需要的用來解決問題的代碼。這里我們不必時刻小心的維護用戶信息各個部分是"一起"的,在這他們都屬于UserInfo的屬性,保存文件時也不必再考慮其實現的細節,這些細節我們已經做好了封裝,在這里只需要使用就行。

利用計算機來對事物進行抽象并使用便是面向對象編程。

三、面向對象的三個特性
1、封裝
將水燒開,我們需要熱水器和電。將水倒入插電的熱水器,打開開關將水燒開。在這個過程中我們并不關心熱水器的具體實現,也不關心電是這產生的等等,這些所有的東西都是“封裝”好的,我們只使用好這些東西就行。

編程來解決這個問題時,何不妨同樣先將熱水器等的屬性和功能進行封裝。然后在使用這些封裝好的元素來解決問題,就如同實際中一樣自然流暢。而不是在每個步驟都調用計算機相關的特性來實現,這樣會讓整個問題和計算機的實現混合不清。

類與對象:

面向對象中用類來描述事物的屬性和功能,對事物進行抽象便是抽象為一個類。  
對象是類的一個具體實例。如某天看到的一只鳥,這只鳥便是鳥類的一個具體實例。

通過定義類將問題空間中元素的進行了封裝,然后實例化類的對象來為問題的求解提供服務。

類也是自定義的數據類型:

一個類定義完成后便是一個我們自己定義的數據類型。像創建內置類型的變量一樣創建類的變量(即類的對象),然后操作這些對象。每個對象都有其類的特性,而每一個對象有是獨立的一個變量。

生活中使用程序提供的服務來解決問題,而程序的又調用各個對象提供的服務來來實現。這些對象和實際問題中的各個元素一樣,通過調用這些元素完成特定的功能來解決問題。對象的調用便是調用對象的方法,每一個方法滿足了特定的需求。

在面向對象中一切都是對象,每個對象提供服務或數據給其他對象,對象之間互相調用和傳遞數據來解決問題

2、繼承

一個新類和原有類具有相似的功能,只是添加了部分新功能或部分功能不一樣,我們又得重新定義重復的功能,這樣顯得很麻煩,代碼不具備復用性。 這類需求在面向對象中使用繼承來處理。

通過繼承新的類便具備了原有類的功能和特性的同時又可以進行自己的擴展創建出一個新類。被繼承的類稱為基類,繼承基類的新類稱為導出類。通常將一些共性和核心創建為基類,再通過繼承來創建新不同實現的新類。

繼承時,導出類繼承了基類所有的特性和功能,這也就意味著所有對基類的調用,在導出類中同樣也具有并可以調用,如此意味著導出類與基類是同一的類型。但基類與導出類卻不是同一類型,因為對導出類添加的新特性基類并不具備。

所以可以將導出類的實例對象賦給基類,作為一個基類對象使用。但這時是并不可以訪問導出類的新方法,畢竟導出類同基類是同一類型,但基類同導出類不是同一類型,因為導出類會添加或修改類功能。
3、多態
你有很多部手機,但每一部手機的充電器都是不一樣的,當其中一部手機需要充電的時,你對助理說“幫我沖下電”,助理自然會去找合適充電器,不必告訴助理手機是什么型號去找什么樣的充電器。

將這些手機進行封裝

先將手機共有的特性封裝為一個Phone基類,基類包括充電這個共性功能。然后繼承這個類并覆蓋基類的充電方法,來實現每一類型的充電的具體實現。

生活中我們說手機充電,這里手機是一個大的類型,但我們知道該用那個一個充電器。
既然在繼承時導出類和基類是同一個類型,那么當我們把一個派生類對象賦給基類時,對于那些覆蓋了基類的功能,同樣也應該知道在需要時去調用派生類的實現。

Phone p = new Apple();
p.charge();

通過繼承新加了Apple手機的類,然后創建Apple類并將它賦值給了Phone類型,那么當調用充電時自然應該去調用Apple自己的充電方法。

根據對象具體實現取去查找其對應的方法,這就是多態。

當然多態對于產生覆蓋的方法才有意義,畢竟雖然導出類和基類可以視為統一類型是因為導出類繼承了基類的全部,但基類卻并不擁有導出類的新特性。所以在一個基類對象上調用導出類的新功能者并沒有什么意義,也不符合現實。畢竟在生活中我們可以說交通工具載貨,但并不會說交通工具起飛,而是說飛機起飛。但對于導出類覆蓋基類的方法,導出類和基類都有這樣功能,只是實現不同,所以多態在此時顯得有意義且必要。
*建議

如果新的類只是單純的繼承而沒有添加任何新的特性,這就意味著導出類和基類屬性和方法完全相同,然而這樣并沒有什么特別的意義,建議導出類與基類存在一定的差異。

產生差異:在導出類中添加新的特性或覆蓋

在需要時才使用繼承,處處使用繼承是不合理的且會導致設計過分復雜和難以維護。是否使用繼承:導出類與基類是否為“是一個的關系”,并具有意義,列如一個圓是一個幾何”

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68078.html

相關文章

  • 編程范式與函數式編程

    摘要:聲明式編程一種編程范式,與命令式編程相對立。常見的聲明式編程語言有數據庫查詢語言,正則表達式邏輯編程函數式編程組態管理系統等。函數式編程,特別是純函數式編程,嘗試最小化狀態帶來的副作用,因此被認為是聲明式的。 編程范式與函數式編程 一、編程范式的分類 常見的編程范式有:函數式編程、程序編程、面向對象編程、指令式編程等。在面向對象編程的世界,程序是一系列相互作用(方法)的對象(Class...

    noONE 評論0 收藏0
  • 初探面向對象編程之oop與設計模式

    摘要:為什么要采用面向對象編程解決問題更容易設計計算機程序就是為了解決人類的問題。面向對象編程需要對業務及代碼的架構是有一定的要求的。 1. 編程方式 我們目前的編程方式大體可以有以下三種編程方式: 順序編程 過程式編程 面向對象編程 在講面向對象編程時先講一下什么是順序編程,什么是過程式編程,什么是面向對象編程: 順序編程: 就是只用一個單線程去執行一段代碼,執行過程根據代碼依次從上...

    BingqiChen 評論0 收藏0
  • SegmentFault 技術周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評論0 收藏0
  • SegmentFault 技術周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    Lyux 評論0 收藏0
  • SegmentFault 技術周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    AaronYuan 評論0 收藏0
  • JavaScript面向對象編程——面向對象

    摘要:面向對象面向對象的概述面向對象是什么面向對象編程的全稱是,簡稱。面向對象編程是用抽象方式創建基于現實世界模型的一種編程。面向對象編程可以看做是使用一系列對象相互協作的軟件設計。面向對象編程的山歌主要的特征是封裝繼承多態。 面向對象 面向對象的概述 面向對象是什么 面向對象編程的全稱是Object Oriented Programming,簡稱OOP。面向對象編程是用抽象方式創建基于現實...

    SimonMa 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<