你把重復(fù)的代碼提取出來(lái)封裝成一個(gè)方法不就是了,無(wú)非就是
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括自貢網(wǎng)站建設(shè)、自貢網(wǎng)站制作、自貢網(wǎng)頁(yè)制作以及自貢網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,自貢網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到自貢省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
private?void?SendData(int?screenid,int?controlid,String?info)
{
UpdateTextData?data=new?UpdateTextData();
data.setScreen_id(screenid);
data.setControl_id(controlid);
data.SetStrings(info);
ListByte.......
RS232.write.......
}
之后在你的popupAlertWindow里就可以寫(xiě)
SendData(7,5,String.valueOf(code));
SendData(7,5,type);
SendData(7,5,info);
說(shuō)給人家聽(tīng),我們就說(shuō)的通俗簡(jiǎn)單點(diǎn): 代碼封裝的好處:第一點(diǎn)在于安全,JAVA中類(lèi)的一個(gè)屬性,我們一般會(huì)在類(lèi)中將其私有化然后getter和setter方法對(duì)外提供得到和設(shè)置的方法,這就好比自動(dòng)存提款機(jī),錢(qián)就是我們要的屬性,要的數(shù)據(jù),放在那直接去拿可以嗎?很明顯不行,所以自動(dòng)存提款機(jī)提供了取錢(qián)的方法和存錢(qián)方法,而你不用知道錢(qián)從哪來(lái)要到哪里去。第二點(diǎn)在于方便:方法也是封裝的一種體現(xiàn),有一個(gè)功能我們要反復(fù)調(diào)用,每次寫(xiě)同樣的代碼嗎?答案很明顯,不要!,我們寫(xiě)個(gè)方法,把這段功能代碼封裝成一個(gè)方法,需要的時(shí)候調(diào)用方法名就可以了,不是嗎? 關(guān)于package:如果一個(gè)項(xiàng)目很大的話,會(huì)分成很多小組,每個(gè)小組會(huì)有很多開(kāi)發(fā)人員,大家在編寫(xiě)代碼時(shí)說(shuō)不定會(huì)出現(xiàn)同樣的類(lèi)名,問(wèn)題就來(lái)了,我在調(diào)類(lèi)的時(shí)候,調(diào)的是哪個(gè)?所以每個(gè)小組用不同的包名,這樣來(lái)區(qū)分類(lèi)所在的位置。好,如果你說(shuō)項(xiàng)目編碼之前詳細(xì)設(shè)計(jì)說(shuō)的很清楚了,類(lèi)不可能出現(xiàn)同名,那么包的另外一個(gè)好處在于相似用途的類(lèi)放在一個(gè)包下可以方便管理和查找,比如java.util包,如查沒(méi)有包的存在,我想查API看有哪些集合框架,你說(shuō)方便不 權(quán)限修飾符的作用就是:你很有錢(qián),你愿意告訴誰(shuí)你很有錢(qián)需要的時(shí)候可以來(lái)找你,你的親屬?你的兒子?還是全世界的所有人?你自己有必要告訴誰(shuí) 那么他們?nèi)卞X(qián)的時(shí)候就會(huì)想到你
封裝性是整個(gè)面向?qū)ο蟮牡谝淮筇匦裕^的封裝性幾是指類(lèi)內(nèi)部的操作對(duì)外部不可見(jiàn)。
范例:觀察如下的程序問(wèn)題
class Person { // 類(lèi)名稱的單詞首字母必須大寫(xiě)
String name ; // 姓名,是一個(gè)字符串所以使用String
int age ; // 年齡是一個(gè)整數(shù),所以使用int
public void tell(){ // 定義一個(gè)方法
System.out.println("姓名:" + name + ",年齡:" + age) ;
}
}
public class ClassDemo {
public static void main(String args[]){
Person per = new Person() ;
per.name = "張三" ;
per.age = -30 ;
per.tell() ;
}
}
此時(shí)的程序從技術(shù)(語(yǔ)法)上而言沒(méi)有任何的問(wèn)題,但是從實(shí)際的生活(業(yè)務(wù))上來(lái)看,一個(gè)人的年齡絕對(duì)不可能是-30歲,所以這個(gè)時(shí)候造成問(wèn)題的主要原因就是類(lèi)中的操作對(duì)外部可見(jiàn)。
此時(shí),就可以通過(guò)封裝性來(lái)解決此類(lèi)問(wèn)題,如果現(xiàn)在要想對(duì)類(lèi)中的屬性或方法封裝,可以直接使用private關(guān)鍵字完成。
class Person { // 類(lèi)名稱的單詞首字母必須大寫(xiě)
private String name ; // 姓名,是一個(gè)字符串所以使用String
private int age ; // 年齡是一個(gè)整數(shù),所以使用int
public void tell(){ // 定義一個(gè)方法
System.out.println("姓名:" + name + ",年齡:" + age) ;
}
}
public class ClassDemo {
public static void main(String args[]){
Person per = new Person() ;
per.name = "張三" ;
per.age = 99999 ;
per.tell() ;
}
}
此時(shí),程序編譯之后出現(xiàn)了以下的錯(cuò)誤信息:
ClassDemo.java:11: name has private access in Person
per.name = "張三" ;
^
ClassDemo.java:12: age has private access in Person
per.age = 99999 ;
^
2 errors
由于name和age兩個(gè)屬性被private聲明了(封裝了,私有)所以,現(xiàn)在根本無(wú)法被外部所訪問(wèn),很明顯,此時(shí)的屬性絕對(duì)安全,但是封裝歸封裝了,一個(gè)問(wèn)題就出現(xiàn)了,現(xiàn)在的屬性無(wú)法操作了,無(wú)法操作就沒(méi)有意義了,所以此時(shí),就可以給出一個(gè)概念,以后凡是類(lèi)中的屬性在定義的時(shí)候必須封裝,封裝之后的屬性一定要通過(guò)setter、getter方法設(shè)置和取得。Setter和getter方法本身有自己的命名規(guī)范。
? 例如:private String name ;
? setter:public void setName(String na)
? getter:public String getName()
class Person { // 類(lèi)名稱的單詞首字母必須大寫(xiě)
private String name ; // 姓名,是一個(gè)字符串所以使用String
private int age ; // 年齡是一個(gè)整數(shù),所以使用int
public void setName(String n){
name = n ;
}
public void setAge(int a){
age = a ;
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
public void tell(){ // 定義一個(gè)方法
System.out.println("姓名:" + name + ",年齡:" + age) ;
}
}
public class ClassDemo {
public static void main(String args[]){
Person per = new Person() ;
per.setName("張三") ;
per.setAge(99999) ;
per.tell() ;
}
}
此時(shí),雖然是通過(guò)setter和getter方法間接的訪問(wèn)了私有屬性,但是卻沒(méi)有檢驗(yàn),一旦需要檢驗(yàn),則檢驗(yàn)的操作應(yīng)該放在setter語(yǔ)句之中。
所有的設(shè)置應(yīng)該在setter中完成,而getter方法只是將內(nèi)容簡(jiǎn)單的返回即可。
class Person { // 類(lèi)名稱的單詞首字母必須大寫(xiě)
private String name ; // 姓名,是一個(gè)字符串所以使用String
private int age ; // 年齡是一個(gè)整數(shù),所以使用int
public void setName(String n){
name = n ;
}
public void setAge(int a){
if(a0 a200){
age = a ;
}
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
public void tell(){ // 定義一個(gè)方法
System.out.println("姓名:" + name + ",年齡:" + age) ;
}
}
public class ClassDemo {
public static void main(String args[]){
Person per = new Person() ;
per.setName("張三") ;
per.setAge(99) ;
per.tell() ;
}
}
此時(shí),就通過(guò)封裝性解決了設(shè)置錯(cuò)誤內(nèi)容的問(wèn)題。
一定要注意的是,封裝性出了在屬性聲明上外,也可以在方法上聲明。
private void info(){ // 私有方法
System.out.println("*************************") ;
}
public void tell(){ // 定義一個(gè)方法
this.info() ;
System.out.println("姓名:" + name + ",年齡:" + age) ;
}
如果現(xiàn)在調(diào)用的是本類(lèi)中的方法,可以通過(guò)“this.方法()”的形式訪問(wèn)。
這個(gè)是MLDN李興華老師將封裝性的時(shí)候介紹的,你可以看下
1.?Java語(yǔ)言是不是繁瑣呢?手頭有一本《Thinking in Java》中文第四版,數(shù)了一下正文共22章856頁(yè)。隨手翻一下,示例代碼和講解正文大概比例在1.5 : 1這樣。沒(méi)有真正用Java干過(guò)項(xiàng)目的人肯定會(huì)大為驚嘆:我勒個(gè)去,這么多知識(shí)點(diǎn)!此為“繁”;
2. 絕大部分搞編程的人,事實(shí)上,都是在使用一門(mén)語(yǔ)言的某個(gè)子集。該子集的形成由項(xiàng)目主導(dǎo)者發(fā)起、開(kāi)發(fā)活動(dòng)參與者共同決定,且相對(duì)長(zhǎng)期穩(wěn)定。每一個(gè)即將參與該項(xiàng)目的人肯定會(huì)先把語(yǔ)言學(xué)個(gè)大概(其難度參考前一條),然后再根據(jù)項(xiàng)目學(xué)習(xí)該語(yǔ)言子集,最后固化下來(lái)。不斷使用該子集固然能提升開(kāi)發(fā)效率,但代價(jià)不菲,極容易就變成了項(xiàng)目中的一顆鏍絲釘(“專(zhuān)家”);
3. 一門(mén)語(yǔ)言的設(shè)計(jì)肯定不會(huì)一蹴而就,一步步改良。沒(méi)記錯(cuò)的話,Java誕生于1995年左右,到今天已經(jīng)快滿20年。在當(dāng)時(shí)那種IT環(huán)境和條件下設(shè)計(jì)出來(lái)的語(yǔ)言,必然存在許多妥協(xié)、限制與錯(cuò)誤,既不能隨便將之抹除(可能還有很多工程依賴著),也不能隨便更正,只能通過(guò)添加新語(yǔ)法、新類(lèi)庫(kù)來(lái)打補(bǔ)丁,導(dǎo)致語(yǔ)言更“繁”。舉個(gè)例子,非內(nèi)建容器類(lèi)庫(kù)是一個(gè)典型硬傷,再舉個(gè)例子,時(shí)間日期類(lèi)沒(méi)見(jiàn)有多好用,也沒(méi)見(jiàn)有更新過(guò),連替代品都沒(méi)見(jiàn)過(guò)(恕我不寫(xiě)Java,的確沒(méi)見(jiàn)過(guò));
4. 類(lèi)庫(kù)(框架)豐富是好事還是壞事,要看針對(duì)同一個(gè)任務(wù)能找到多少替代品。如果有三到四個(gè),那么肯定是好事,既不會(huì)造成單點(diǎn)故障,也不至于造成理解和記憶上的負(fù)擔(dān)。但是類(lèi)庫(kù)太多,選擇太多,人的幸福感反而會(huì)下降,高效率也就無(wú)從談起;
5. 框架真的可以保證快速開(kāi)發(fā)嗎?熟悉的話是可以的,專(zhuān)家編程嘛!但是
熟悉之前要花非常多時(shí)間學(xué)習(xí)使用吃悶虧。
框架只能免除掉一部分開(kāi)發(fā)工作量。
框架跟業(yè)務(wù)總是存在“不合縫”的差異。
只不過(guò)將復(fù)雜度從開(kāi)發(fā)轉(zhuǎn)移到了部署運(yùn)維。
依賴性極強(qiáng)。
6. IDE可以提高開(kāi)發(fā)效率嗎??jī)H僅一部分罷了。IDE本身就是個(gè)非常復(fù)雜的東西,將之調(diào)校到符合個(gè)人開(kāi)發(fā)步調(diào)的進(jìn)程可能會(huì)持續(xù)很久,事實(shí)上大部分人也只是用一些常用功能罷了。而且
基于圖形界面意味著自動(dòng)化不容易(需要編寫(xiě)額外插件)。
出了問(wèn)題查找原因不易。
依賴性極強(qiáng)。
7. Java本身是面向系統(tǒng)(機(jī)器)的,不是面向開(kāi)發(fā)人員的。這種強(qiáng)設(shè)計(jì)保證有助于提升目標(biāo)系統(tǒng)的可靠性,卻犧牲了開(kāi)發(fā)人員的幸福感。既然設(shè)計(jì)得如此嚴(yán)謹(jǐn)規(guī)范,為什么不能自動(dòng)生成Java程序,
相對(duì)于兩種語(yǔ)言,C++的復(fù)雜體現(xiàn)在變量的定義有兩種模式,一種是指針,一種沒(méi)有指針,另外C++是可以對(duì)內(nèi)存進(jìn)行操作,需要程序?qū)κ褂玫膬?nèi)存做及時(shí)的釋放;
相比較JAVA語(yǔ)言,變量的定義只有一種,沒(méi)有指針的概念,其實(shí)在底層的語(yǔ)義封裝的時(shí)候就是C++中的指針概念,簡(jiǎn)單的說(shuō),JAVA定義的變量都是指針,而且Java有自己的垃圾回收機(jī)制,那么就不存在程序進(jìn)行內(nèi)存釋放問(wèn)題。
java是面向應(yīng)用的,C++是面向底層的。
從程序的開(kāi)發(fā)設(shè)計(jì)角度來(lái)考慮,底層的程序需要進(jìn)行切塊,各個(gè)模塊間的交互需要明確,因此C++程序往往文件大小不會(huì)太大;而應(yīng)用層的程序,對(duì)于用戶來(lái)說(shuō)就是實(shí)打?qū)嵉墓δ埽谀壳坝布O(shè)備的性能提升,軟件功能的應(yīng)用將越來(lái)越復(fù)雜,這就導(dǎo)致了JAVA的內(nèi)容很多很雜。
因此從這點(diǎn)來(lái)看,JAVA是因?yàn)閼?yīng)用面的廣,而導(dǎo)致技術(shù)的雜而多。
工資高低不看語(yǔ)言,先是看公司、在看崗位、在看技術(shù)
標(biāo)題名稱:Java代碼封裝的太繁瑣,java過(guò)度封裝
網(wǎng)頁(yè)鏈接:http://m.kartarina.com/article34/hscose.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、品牌網(wǎng)站設(shè)計(jì)、電子商務(wù)、網(wǎng)站維護(hù)、網(wǎng)站收錄、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)