? ? ? ? 再進(jìn)一步,指定參數(shù)默認(rèn)值的情況下,有時還要對參數(shù)值進(jìn)行改變,比如汽車?yán)锍坛鰪S還要測試,運輸?shù)鹊炔豢赡苁?就需要修改屬性的值。可通過兩中方法對屬性值進(jìn)行修改:
一、直接修改屬性值;二、通過一定的方法修改屬性值。
? ? ? ? 未修改前、默認(rèn)屬性值如下代碼:
一、直接修改屬性值:創(chuàng)建實例后。通過給實例里程屬性直接賦值的方式實現(xiàn)修改。在初始化描述汽車屬性時,相當(dāng)于把定義參數(shù)和給參數(shù)賦值并添加到屬性中以此實現(xiàn)。在類中這樣的屬性是存在的,創(chuàng)建實例后自動傳遞值,也就可以直接進(jìn)行修改。代碼如下:
二、通過方法實現(xiàn)屬性值的修改:
1、通過直接在類中更新的方式:定義一個更新里程數(shù)據(jù)的方法,并對其傳遞想要改變的值。在創(chuàng)建實例后,對實例使用更新方法并傳遞值。
汽車?yán)锍讨荒茉黾樱瑸榱朔乐够卣{(diào)里程以次充好,還需要設(shè)置條件禁止回調(diào)里程。里程數(shù)據(jù)不小于0時,將數(shù)據(jù)賦給屬性,反之則打印一條警告信息。
2、通過方法對屬性的值進(jìn)行遞增,比如出廠增加了多少里程;二手車購買到登記增加了多少里程等。定義一個增加值的方法,并對其傳遞里程數(shù)據(jù)。同樣增加值也不能為負(fù)以防篡改數(shù)據(jù)。設(shè)置條件,增加里程不為負(fù)時,里程數(shù)據(jù)相加;反之,打印一條警告信息,顯示里程數(shù)據(jù)錯誤。在實例中調(diào)用方法,看是否符合預(yù)期。
通過增加方法后可實現(xiàn)屬性值的修改和限定,但是依然可以通過直接賦值的方式改變里程數(shù)據(jù)。任然有回調(diào)的可能性。
同樣也可以Dog類來實現(xiàn)改名和年齡屬性值的修改。
狗的年齡有界限并不是無線大,所以也有條件限制。
以下是原代碼,對打印項稍作改動,讓輸出更直觀明了。請忽略文檔字符串的錯誤,實在不想改了。
? ? ? ? 通過創(chuàng)建實例,對名稱屬性直接賦值和通過定義改名方法并在實例中調(diào)用實現(xiàn)名稱的改變;定義年齡的增加方法并設(shè)置限制條件,在實例中調(diào)用方法實現(xiàn)年齡的遞增。
超過年齡的限制條件時,打印提示消息。
? ? ? ? 一般狗狗的壽命在13—18年間,寵物狗大概在15年左右。怎樣增加條件,讓不管創(chuàng)建的實例年齡是多少都可以滿足限制條件,并且年齡遞增時不超出限制條件且年齡只能遞增不能回調(diào)。
回調(diào)的情況:
創(chuàng)建實例不符合條件時:
判別增加值不符合條件時:
正常情況: