请教大家一个vs2005的问题,如果自己定义了用户控件的话,用鼠标在解决方案的列表中用鼠标双击不是能看设计界面么,为什么有的时候用鼠标双击的时候设计界面出不来,然后出来一大堆类似下面的乱码,哪位高手给个解决方法吧,小弟先谢过了,下面就是设计界面上显示出来的乱码:接口关注的是属性和方法,抽象类继承关注的是类本身
不是人家敷衍,这问题问太多了,随便搜一下看看就有了,拿这个问题来这里,本身也就是想得到一些肤浅的答案而已。
当然,这里也有不少像P哥那样的行家里手,但行家的话估计也不是人人都能看得懂的。
但是,同一个问题,每个人所处的角度不同,所得到的结论不同。设计的从设计角度,编码的从编码角度。
也就是如P哥所说:“可以像一个“猴子”一样在不同的概念中挑来跳去,但是如果你真的跳累了,就会想到结论了。”。
简而言之:接口是一种契约,定义大家的行为。
抽象类是一个行为的抽象。
两者的具体操作,依照具体的情况而定。
在多态中两者都可用,但是具体的情况依照设计模式的要求来定。
区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,京哈是狗,牧羊犬是狗,那么狗的一般特性,都会在京哈,牧羊犬中找到,那么狗相对于京哈和牧羊犬来说,就属于这类事物的抽象类型;而对于“叫”这个动作来说,狗可以叫,鸟也可以叫。很明显,前者相当于所说的是抽象类,而后者指的就是接口。 区别二,抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。
对于您的这几点,我都毫无异议地赞同,在这些问题上,我们没有不同意见。上次也是在优快云,有位朋友问到,C语言中有没有类似泛型的东西。我给他的回答是,泛型的东西是对面向对象的一种支持,C语言不是面向对象语言,但是你可以使用面向对象的思想,在C语言里去实现你所需要的东西。换句话说,面向对象跟思想有关,而跟具体实现无关。
1、对于楼主的问题,属于技术范畴,这个问题的答案上面已经有不少回复已经说过了,不再重复
2、对于面向对象这一思想性问题,目前我和sp1234的观点一致
3、在具体的设计实践上,我并不认为区分了抽象类和接口就是一种不好的设计,我也不会认为,不去区分这些内容也是一种不好的设计。我认为设计没有好坏,没有合理与不合理,关键还需要看究竟这个设计是用来解决什么样的问题,而这些问题恰恰都是来自需求的。
隔一段时间就会有问这个的贴出现,你提问的时候没见下面有很多同样的提问?
像这样的问题 你不应该 提出来 。。人家都不知道 回答多少编了
8.尽量将接口设计成功能单一的功能块,以.NET Framework为例,IDisposable、IComparable、IEquatable、
* IEnumerable等都只包含一个公共方法。
9.接口名称前面的大写字母“I”是一个约定,正如字段名以下划线开头一样,请坚持这些原则。
10.在接口中,所有的方法都默认为public。
11.如果预计会出现版本问题,可以创建“抽象类”。例如,创建了狗(Dog)、鸡(Chicken)和鸭(Duck),
* 那么应该考虑抽象出动物(Animal)来应对以后可能出现风马牛的事情。而向接口中添加新成员则会强制要求
* 修改所有派生类,并重新编译,所以版本式的问题最好以抽象类来实现。
12.从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。
13.对抽象类不能使用new关键字,也不能被密封,原因是抽象类不能被实例化。
14.在抽象方法声明中不能使用 static 或 virtual 修饰符。
来源:足球视频在线