<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Java中使用接口實(shí)現(xiàn)多繼承和多態(tài)的方法

          Java中使用接口實(shí)現(xiàn)多繼承和多態(tài)的方法

          作者: 時間:2011-11-24 來源:網(wǎng)絡(luò) 收藏
            1.JAVA里沒有多繼承,一個類之能有一個父類。

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

            //父類

            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();

            }

            }

            都調(diào)用了相同的方法,出現(xiàn)了不同的結(jié)果!這就是多態(tài)的表現(xiàn)!

            2.JAVA中沒有多繼承,而用接口實(shí)現(xiàn)了多繼承!一個類或是可以同時實(shí)現(xiàn)多個接口?。ň拖喈?dāng)于C++里一個類同時繼承了多個類?。├纾?/P>

            public class Son implements Father1,Father2,Father3{

            }

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

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

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

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

            //二代子類

            public class Son11 extends Son1{

            //重寫父類打孩子方法

            public void hitChild(){ System.out.println("我是二代子類對此方法的新實(shí)現(xiàn)");

            }

            }

            2.用接口實(shí)現(xiàn)增加新的功能。

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

            //新接口

            public interface PetInterFace{

            //新功能方法 public void pet();

            }

            //二代子類

            public class Son11 extends Son1 implements PetInterFace{

            //實(shí)現(xiàn)接口方法

            public void pet(){

            System.out.println("父親很愛我!");

            }

            }

            這樣這個二代子類即有了老的方法,又有新的功能!

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          c++相關(guān)文章:c++教程




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();