找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3331|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Java多接口繼承同名方法沖突問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99624 發(fā)表于 2015-12-27 03:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
同一個(gè)包中,假定有2個(gè)基礎(chǔ)接口NetAddress(網(wǎng)絡(luò)地址)和PhysicalAddress(物理地址),并有一個(gè)子接口IPv4Address同時(shí)implements上述兩個(gè)接口,如下所示:
NetAddress(網(wǎng)絡(luò)地址)
public interface NetAddress {
     byte[]ipv4=new byte[4];
     publicvoid SetAddress(byte InitIpv4[]);
     
}


PhysicalAddress(物理地址)
public interface PhysicalAddress {
byte []mac=new byte[6];
public void  SetAddress(byteInitMac[]);
}


IPv4Address
public class IPv4Address implementsNetAddress,PhysicalAddress{
public void SetAddress(byte InitAddress[])
       {
         //是給ipv4賦值還是給mac賦值呢?
       }
}


由于NetAddress和PhysicalAddress都有同名的SetAddress,eclipse會(huì)默認(rèn)IPv4Address中的SetAddress方法是對(duì)NetAddress中SetAddress實(shí)現(xiàn),原因是兩個(gè)父接口的SetAddress不僅名稱(chēng)相同,連參數(shù)類(lèi)型(簽名)也相同,解決辦法只能在父接口中盡量減少這種方法沖突:

NetAddress(網(wǎng)絡(luò)地址)
public interface NetAddress {
     byte[]ipv4=new byte[4];
     publicvoid SetIpv4(byte InitIpv4[]);
     
}


PhysicalAddress(物理地址)
public interface PhysicalAddress {
byte []mac=new byte[6];
public void  SetMac(byteInitMac[]);
}


IPv4Address
public class IPv4Address implementsNetAddress,PhysicalAddress{
public void SetIpv4(byte IPv4[])
       {
         //給IP地址賦值
       }

        publicvoid  SetMac(byte Mac[]);
      {
        //給Mac地址賦值
      }
}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表