关于接口继承的问题,继承接口的类,不是实现接口的方法,子类才实现,怎么写?

IamaArchitecter 2009-09-04 10:10:25
关于接口继承的问题,继承接口的类,不是实现接口的方法,子类才实现,怎么写?

public interface observable
{
public void update();
}

public class sensor : observable
{
//这里不是实现接口的方法,子类才实现,这里应该怎么写?
}

public class xxsensor:sensor
{
public override update()
{
xxx
}
}
...全文
227 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
离子漂浮物 2009-09-04
  • 打赏
  • 举报
回复
突然想起,楼主这个问题有点奇怪,既然sensor不想实现接口那就不要继承接口就是了。

直接这样

public interface observable
{
public void update();
}

public class sensor
{

}

public class xxsensor:sensor,observable
{
public override update()
{
xxx
}
}
微创社(MCC) 2009-09-04
  • 打赏
  • 举报
回复
尽量避免使用:
基类及接口耦合性约束

哪果一定要这样做,
基类一定是抽像的,并且只是为接口提供方法的实现。

这样做的缺点是,接口其实己经是被确定的。

当然,作为框架类库,这种做法很常见。
原则上,基类和接口是被固定下来的。
用为框架开发没有问题,
如果在业务环境中使用,
不是很合理。

离子漂浮物 2009-09-04
  • 打赏
  • 举报
回复
以上是错的,请忽视
cc_net 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iamaarchitecter 的回复:]
如果 sensor  是一个抽象类呢,应该怎么写?
[/Quote]

一样的啊,抽象类里面也可以有非抽象的方法啊
或则改成抽象方法
public abstract class sensor : observable
{
public abstract void update();

}
离子漂浮物 2009-09-04
  • 打赏
  • 举报
回复

public interface observable
{
public void update();
}

public abstract class sensor : observable
{
}

public class xxsensor:sensor
{
public override update()
{
xxx
}
}
flyerwing 2009-09-04
  • 打赏
  • 举报
回复

interface observable
{
void update();
}

public class sensor : observable
{
public void update()
{
//写处理方法
}
}

public class xxsensor:sensor
{
public override update()
{
xxx
}
}
liffe 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 iamaarchitecter 的回复:]
这样可以么?

C# codepublicabstractclass sensor : observable
{publicabstractvoid update() ;
}
[/Quote]

这样写会警告的吧?
IamaArchitecter 2009-09-04
  • 打赏
  • 举报
回复
这样可以么?



public abstract class sensor : observable
{
public abstract void update() ;
}


hcfjdwlmcchina 2009-09-04
  • 打赏
  • 举报
回复
还是overide
IamaArchitecter 2009-09-04
  • 打赏
  • 举报
回复
如果 sensor 是一个抽象类呢,应该怎么写?
cc_net 2009-09-04
  • 打赏
  • 举报
回复

public interface observable
{
public void update();
}

public class sensor : observable
{
public virtual void update()
{
throw new Exception("The method or operation is not implemented.");
}
}

public class xxsensor:sensor
{
public override update()
{
xxx
}
}
robin521 2009-09-04
  • 打赏
  • 举报
回复

public interface observable
{
public void update();
}

public class sensor : observable
{
throw new Exception("The method or operation is not implemented.");
}

public class xxsensor:sensor
{
public override update()
{
Console.writeline("fuck over!");
}
}

jy251 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 iamaarchitecter 的回复:]
关于接口继承的问题,继承接口的类,不是实现接口的方法,子类才实现,怎么写?

public interface observable
{
  public void update();
}

public class sensor : observable
{
   //这里不是实现接口的方法,子类才实现,这里应该怎么写?
}

[/Quote]

public abstract class sensor : observable
{
//这里不是实现接口的方法,子类才实现,这里应该怎么写?
public abstract update();
}
Yunnying 2009-09-04
  • 打赏
  • 举报
回复

public interface observable
{
void update();//不需要public的标记,对于interface来说,public是必须的
}

public abstract class sensor : observable
{

#region observable 成员

public virtual void update()//必须标记virtual ,否则不可以重写
{

}

#endregion
}

public class xxsensor : sensor
{
//进行自己需要的重写
public override void update()
{
//TODO
}
}


楼上说:突然想起,楼主这个问题有点奇怪,既然sensor不想实现接口那就不要继承接口就是了。

其实可能楼主有很多个子类要继承
但是又不想在每个子类上都要继承两个对象那样
IamaArchitecter 2009-09-04
  • 打赏
  • 举报
回复
如果 observable 是一个抽象类呢?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧