標題: Java多接口繼承同名方法沖突問題 [打印本頁]

作者: 51黑ren    時間: 2015-12-27 03:11
標題: Java多接口繼承同名方法沖突問題
同一個包中,假定有2個基礎接口NetAddress(網(wǎng)絡地址)和PhysicalAddress(物理地址),并有一個子接口IPv4Address同時implements上述兩個接口,如下所示:
NetAddress(網(wǎng)絡地址)
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會默認IPv4Address中的SetAddress方法是對NetAddress中SetAddress實現(xiàn),原因是兩個父接口的SetAddress不僅名稱相同,連參數(shù)類型(簽名)也相同,解決辦法只能在父接口中盡量減少這種方法沖突:

NetAddress(網(wǎng)絡地址)
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地址賦值
      }
}









歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1