标题: Java多接口继承同名方法冲突问题 [打印本页]

作者: 51黑ren    时间: 2015-12-27 03:11
标题: Java多接口继承同名方法冲突问题
同一个包中,假定有2个基础接口NetAddress(网络地址)和PhysicalAddress(物理地址),并有一个子接口IPv4Address同时implements上述两个接口,如下所示:
NetAddress(网络地址)
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实现,原因是两个父接口的SetAddress不仅名称相同,连参数类型(签名)也相同,解决办法只能在父接口中尽量减少这种方法冲突:

NetAddress(网络地址)
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.51hei.com/bbs/) Powered by Discuz! X3.1