|
同一個(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地址賦值
}
}
|
|