熱烈祝賀臺州維博網絡的站長論壇隆重上線!(2012-05-28)    熱烈慶祝偉大的祖國60周年生日 點擊進來我們一起為她祝福吧(2009-09-26)    站長論壇禁止發布廣告,一經發現立即刪除。謝謝各位合作!.(2009-08-08)    熱烈祝賀臺州網址導航全面升級,全新版本上線!希望各位一如既往地支持臺州網址導航的發展.(2009-03-28)    臺州站長論壇恭祝各位新年快樂,牛年行大運!(2009-01-24)    臺州Link正式更名為臺州網址導航,專業做以臺州網址為主的網址導航!(2008-05-23)    熱烈祝賀臺州Link資訊改名為中國站長資訊!希望在以后日子里得到大家的大力支持和幫助!(2008-04-10)    熱烈祝賀臺州Link論壇改名為臺州站長論壇!希望大家繼續支持和鼓勵!(2008-04-10)    臺州站長論壇原[社會瑣碎]版塊更名為[生活百科]版塊!(2007-09-05)    特此通知:新臺州站長論壇的數據信息全部升級成功!">特此通知:新臺州站長論壇的數據信息全部升級成功!(2007-09-01)    臺州站長論壇對未通過驗證的會員進行合理的清除,請您諒解(2007-08-30)    臺州網址導航|上網導航誠邀世界各地的網站友情鏈接和友誼聯盟,共同引領網站導航、前進!(2007-08-30)    禁止發廣告之類的帖,已發現立即刪除!(2007-08-30)    希望各位上傳與下載有用資源和最新信息(2007-08-30)    熱烈祝賀臺州站長論壇全面升級成功,全新上線!(2007-08-30)    
便民網址導航,輕松網上沖浪。
臺州維博網絡專業開發網站門戶平臺系統
您當前的位置: 首頁 » JAVA/JSP編程 » Java中使用接口實現多繼承和多態的方法

Java中使用接口實現多繼承和多態的方法

論壇鏈接
  • Java中使用接口實現多繼承和多態的方法
  • 發布時間:2010-03-06 13:15:46    瀏覽數:6545    發布者:jinlj    設置字體【   
1.JAVA里沒有多繼承,一個類之能有一個父類。


而繼承的表現就是多態。一個父類可以有多個子類,而在子類里可以重寫父類的方法(例如方法print()),這樣每個子類里重寫的代碼不一樣,自然表現形式就不一樣。這樣用父類的變量去引用不同的子類,在調用這個相同的方法print()的時候得到的結果和表現形式就不一樣了,這就是多態,相同的消息(也就是調用相同的方法)會有不同的結果。舉例說明:


//父類
public class Father{
//父類有一個打孩子方法
public void hitChild(){}
}
//子類1
public class Son1 extends Father{
//重寫父類打孩子方法
public void hitChild(){
System.out.println("為什么打我?我做錯什么了!"); }
}
//子類2
public class Son2 extends Father{
//重寫父類打孩子方法 public void hitChild(){
System.out.println("我知道錯了,別打了!"); }
}
//子類3
public class Son3 extends Father{
//重寫父類打孩子方法 public void hitChild(){
System.out.println("我跑,你打不著!"); }
}
//測試類
public class Test{
public static void main(String args[]){
Father father;
father = new Son1();
father.hitChild();
father = new Son2();
father.hitChild();
father = new Son3();
father.hitChild();
}
}


都調用了相同的方法,出現了不同的結果!這就是多態的表現!


2.JAVA中沒有多繼承,而用接口實現了多繼承!一個類或是可以同時實現多個接口。ň拖喈斢贑++里一個類同時繼承了多個類。├纾


public class Son implements Father1,Father2,Father3{

}


接口有利于代碼功能的擴展(增加新的功能)!而繼承則有利于代碼功能的修改(把舊的功能改成新的功能)!這里舊功能的修改和新功能的增加前提是不修改舊的功能,舊的功能仍然可以使用!舊類的代碼也不做修改!


接著上面的繼承舉例:上面例子中的子類我們統稱為一代子類


1.用繼承修改舊的功能。


現在如果一代Son1的功能打孩子,也就是方法hitChild()里邊的功能實現有問題,我們要把具體實現修改掉,那么我們可以重新寫一個新的二代子類Son11繼承自一代子類Son1,并重寫其hitChild()方法。


//二代子類
public class Son11 extends Son1{
//重寫父類打孩子方法
public void hitChild(){ System.out.println("我是二代子類對此方法的新實現");
}
}


2.用接口實現增加新的功能。


現在類Son1已經有了‘打孩子’功能(也就是方法),而我們有了新的需求,我們需要它還要有一個新的功能‘寵孩子’(新方法pet();)。而舊的代碼不能動!那么我們可以定義一個新的接口(PetInterFace),接口里定義這個方法pet()的聲明。再重新寫一個二代子類Son11,讓它先繼承類Son1,同時實現接口 PetInterFace!并實現接口里的 pet()方法!


//新接口
public interface PetInterFace{
//新功能方法 public void pet();
}
//二代子類
public class Son11 extends Son1 implements PetInterFace{
//實現接口方法
public void pet(){
System.out.println("父親很愛我!");
}
}


這樣這個二代子類即有了老的方法,又有新的功能!
娛樂休閑專區A 影視預告B 音樂咖啡C 英語階梯D 生活百科
網頁編程專區E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技術區 N 系統管理O 服務器架設P 網絡/硬件Q 編程序開發R 內核/嵌入
管理中心專區S 發布網址T 版主議事U 事務處理
陕西快乐10分玩法 快乐扑克投注技巧 381818白小姐中特+开奖一 蜂窝配资 安徽11选5前三直遗漏 25选5中奖规则 千里马配资 新疆11选5 捕鱼大师现金版官网 上海11选五计划 35选7计算器