為了鞏固所有學習到的繼承、方法的覆寫概念,下面通過具體的例項來進行說明
要求定以乙個陣列操作類(array類),在這個類裡面可以進行整型陣列的操作,由外部傳入陣列的大小要求實現資料的儲存以及資料的輸出,隨後在這個類上派生出兩個子類:
·排序類:通過此類取得的資料可以進行排序;
·反轉類:通過此類取得的的陣列的資料要求採用倒序的方式。
在進行開發的時候,一定不可能考慮子類,你們如果考慮到子類,你的**就寫不出來了。
要求定以乙個陣列操作類(array類),在這個類裡面可以進行整型陣列的操作,由外部傳入陣列的大小要求實現資料的儲存以及資料的輸出
範例:基本實現
class arrayelse
}public boolean add(int num)
return false ;//儲存失敗
}public int getdata()
}public class textdemo }}
在以上的**之中發現,此時array類沒有提供無參構造,因為要傳入乙個陣列的大小否則該程式無法使用,並且
array
類就規定了要想增加資料使用
add()
方法,要想取出全部資料使用
getdata()
方法。如果要真是排序只是在取得資料的時候講資料的已排序的形式返回即可,其他的操作和array類應該沒有區別甚至我們認為連客戶端使用的方法都應該是相同的。
//定義乙個排序陣列的子類
class sortarray extends array
//因為父類中的
getdata
方法不夠當前類使用,但是有需要保留這個方法名稱
//使用覆寫的概念將此方法的功能擴充
public int getdata()
}public class textdemo }}
在這個程式裡面,我們的思路:
·絕對不改變客戶端已有的使用方法;
·子類現在為了維持方法功能的繼續完善,所以必須根據情況進行父類方法的覆寫。
反轉類的最終要求也是保證客戶端的操作不改變,也就是說父類的方法名稱應該繼續保留。
範例:開發反轉類
class reversearray extends array
public int getdata()
return super.getdata() ;}}
public class textdemo }}
依然保持功能不變。
通過以上的**可以發現:
1、字兒裡的功能就是根據特殊的情況會進行父類擴充;
2、子類擴充方法的時候盡量以父類定義的方法名稱為主,可以根據實際情況進行方法的覆寫。
oc 29 可變陣列
陣列長度不固定,可以隨便往裡面新增或者刪除元素。1.建立陣列 nsmutablearray arraym nsmutablearray array 2.給陣列新增元素 只能是oc物件 void addobject id anobject 3.如何刪除陣列元素 import int main int ...
29 按要求補齊陣列
給定乙個已排序的正整數陣列 nums,和乙個正整數 n 從 1,n 區間內選取任意個數字補充到 nums 中,使得 1,n 區間內的任何數字都可以用 nums 中某幾個數字的和來表示。請輸出滿足上述要求的最少需要補充的數字個數。示例 1 輸入 nums 1,3 n 6 輸出 1 解釋 根據 nums...
29 把陣列排成最小的數
把陣列排成最小的數 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。不難,熟悉了stringstream類的使用,sort的使用,了解了c str str 如果把if num.empty re...