给笔建了个类,水笔类、毛笔类等等都继承笔类,开始觉得这样没什么问题。但发现现在都提倡使用接口,的而且确接口有很大的好处。有点想做成接口,但这样的关系做接口又感觉不对,难道把笔类做成接口,然后在水笔类、毛笔类里面把一摸一样的方法拷贝一份?这好像又违反了复用原则吧?这样的情况究竟应该用继承还是接口呢?用接口怎么做?
解决方案 »
- C# 编程 有一string类型的字符串N长,结果这条字符串太长,造成程序出错,有什么方法不?
- 怎样将网页源码中的字符编码转成字符
- mdi子窗体FormBorderStyle=none,WindowState=normal,在show出窗体时为什么标题栏会闪一下?
- CommonTransportKeys怎么用???????
- GridView控件中的CheckBox控件使用的问题……
- 广纳,,用户业务管理权限的系统分析与设计!!!
- 请问如何用代码实现在一个Access数据库中删除表及修改表名?
- 简单问题,在线等,解决即给分
- 如何实时读取串口扫码枪数据
- 怎么把struct 拷贝到string 中(急)
- .net 代码注释如何公开?
- 关于TabStrip与MultiPage的使用
跑题了,笔类显然是具体类,包含譬如长度这样的属性、write()这样的方法,毛笔类、水笔类当然也是具体类,虽然可以不用继承实现(我还是认为这里是继承的关系),但是如果应该继承的地方也不用继承,那OO里是不是可以去掉继承了呢?(存属探讨)
笔类的write,是抽象方法,这个方法当然是要由毛笔、水笔这些具体类来实现,比如毛笔是用墨汁来write,而水笔是用墨水来write。
但是如果你的笔,除了写,还能上墨水,测试墨水数量,设置颜色,这样一大堆可复用的操作,那就做成继承。无论怎样,原则就是怎样省代码怎么做。切忌Copy & Pastal。即使使用抽象基类来复用代码,还是可以定义接口便于其他人的扩充,例如在ADO.NET中
具体代码如下!
有三个属性,它在所有的类中都会用到,姓名,年龄,Email
定义一个类
public class Details
{
protected string name;
protected string age;
protected string email;
}
public class someClass : Details
{
some方法;
}
谁写个接口啊!
public class Details
{
protected string name;
protected string age;
protected string email;
}
public class someClass : Details,ISomeInterface
{
some方法;
}
//接口
interface ISomeInterface
{
void some();
}
总机一下,是不是这样?
接口是类型无关的集合,即:很多的不同类都可以执行的操作
抽象类是类型相关的集合,只能给同类(子类)定义的操作。
我这样理解可以么?我也不用自己例子,就用微软的,Dispose,这个,我们希望所有的类都可以释放,我们观察一下微软如何做的,没有在Object类里写一个virtual Dispose函数,而是做成了一个接口IDisposed。是否就说明了这个抽象类和接口的用法?定义一组公用,而且无继承关系的方法,多个无法继承的类都需要遵循的方法集合,就是接口。一系列类需要遵循的方法集合,就放在基类里,必要的话做成抽象类。这样对么?欢迎讨论。