C#中的抽象类有什么好处?90
发布网友
发布时间:2023-10-08 18:09
我来回答
共4个回答
热心网友
时间:2024-10-29 02:24
我觉得johnny_8379讲得比较深入,但是只讲了一半,或者只讲了这么做有什么好处,但没讲为什么会有这种好处.这样让人看起来更加感到迷惑.
之所以楼主没有感觉到抽象类的好处,还是因为他所写的或接触到的程序大多都是代码实现起来比较简单,业务逻辑这块不需要太复杂的操作就能实现.所以写在一个界面里面也感觉不到效率和结构上有什么问题.
单纯这样讲抽象类或接口有什么好处可能理解起来比较抽象,感觉不到实际的用途.最好是找一个比较典型的例子给你讲讲.这样理解起来会更加深刻一些.
热心网友
时间:2024-10-29 02:24
抽象类与接口紧密相关。然接口又比抽象类更抽象,这主要体现在它们的差别上:1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。2)抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。3)抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。4)这一点也是最重要的一点本质的一点"抽象类是对象的抽象,然接口是一种行为规范"。
以上是它们本身的异同,下面再来从实际应用讲讲它们的异同!
不同之处:
1、定义
抽象类表示该类中可能已经有一些方法的具体定义,但是接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。
1、用法
1)在继承抽象类时,必须覆盖该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值,这一点与接口相同。
2)当父类已有实际功能的方法时,该方法在子类中可以不必实现,直接引用的方法,子类也可以重写该父类的方法(继承的概念)。
3)而实现 (implement)一个接口(interface)的时候,是一定要实现接口中所定义的所有方法,而不可遗漏任何一个。
4)另外,抽象类不能产生对象的,但可以由它的实现类来声明对象。
有鉴于此,在实现接口时,我们也常写一个抽象类,来实现接口中的某些子类所需的通用方法,接着在编写各个子类时,即可继承该抽象类来使用,省去在每个都要实现通用的方法的困扰
热心网友
时间:2024-10-29 02:25
用抽象类不是好不好而是要不要用的问题。如果你类中一个只有声明没有实现的方法,那么这个类就必须声明为抽象类。比如你有个交通工具类,它有个移动的方法。你不可能写出这个方法的实现,因为不同的交通工具的移动方式是不同的。只有在它的派生类,如SUV汽车,喷气飞机,帆船中才能写它的具体实现。
但反过来如果你想让所有交通工具移动是可以的,把他们放到数组里面,都调用作为交通工具的移动方法就行了。
热心网友
时间:2024-10-29 02:25
如果说的太深入相信你也懂不了!
简单一点:
我们大家都知道三层架构对吧,这是一个最普遍的形式,当然也可以更多层!
以三层架构为例,它分为:数据层,业务逻辑层,界面层。
从字面意义我们就可以看出他们分别是干什么用的。那么我们用什么来联系层与层之间的关系呢?
当然是:接口,或者抽象类。
为什么要用接口或者抽象类,而不用其它的呢?
我们很多初学者在写代码的时候一定都有这样的经历:在我们的界面里,直接把我们很多数据处理、判断逻辑,公共方法都写在里面,这样,让我们界面层的后台代码看起来特别的繁多。造成的后果是:假如界面很多的时候,我们会多写很多重复代码,这样我们的代码就缺乏重用性,但是最重要是这样写出来的程序非常不好维护。假如一个地方出现了问题那么整个程序都将不能使用!
假如我们使用了接口或者是抽象类,那么这方面的问题就迎刃而解了。
总结一下:接口和抽象类普通的作用是代码重用!扩展一下,方面我们修改代码,维护系统!
不懂可以继续问