在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先介绍什么是抽象类? 抽象类用关键字abstract修饰的类就是叫抽象类,抽象类天生的作用就是被继承的,所以不能实例化,只能被继承。而且 abstract 关键字不能和sealed一起使用,因为sealed是不允许继承,这样就是抽象类的意义冲突了。 public abstract class Test { } 现在我们知道知道了抽象类长的什么样了,下面要知道抽象类是干嘛用的。顾名思义把对象共有的东西抽象出来。比如猫和和狗鸟等都有眼睛,都有嘴巴。那我们就可以抽象出一个动物类。把眼睛和嘴巴放到这这些公共的部分抽象到动物类里里面。用来对继承于动物类的子类进行约束。下次在有一个狗。只要继承于动物类那么狗必须实现眼睛和嘴巴。 Dog类 继承了 Animal抽象了。VS提示我们没有实现抽象类Animal类的两个方法。由此可以看出抽象类是对子类的约束。说白了。抽象类就是对子类的抽象,即将子类中的公共部分提取出来,放到一个特定的类中。抽象类是一份合约,用于为同一类型(这里类型不是指数据类型,而是逻辑上的划分,如人和猫都是动物)的子类提供约束。约束他们的公共部分。 现在来总结下抽象类。 1.抽象类的定义需要abstract关键字 2.抽象类的存在的意义就是被继承的。所以不能实例化,不能与sealed关键字一起用。 3.抽象类允许存在非抽象方法和抽象方法。 4.抽象类的抽象成员,子类必须实现。 在来看看接口,接口和抽象类很多概念相似。接口的创建要用到interface,接口出现的意义也是被继承。也不能与sealed关键字一起用 public interface Animal { void Run(); void Say(); } 接口的和抽象类功能一样,也是抽象公共部分。 从逻辑上与抽象类区分的话。总结成一句话。就是接口约束子类对象的行为。抽象类是将同一类型类的公共部分提取出来,进行约束。注意这里的同一类型不是数据类型而是逻辑上的,比如人和啊猫啊狗都是动物。 来总结下两者的区别 1.学过C#的都知道类只能单继承,接口可以多继承。这个就是抽象类和接口的第一个区别。 2.接口不能包含已经实现成员,但是抽象类是可以的 3.接口的成员默认1实现是public的,但是抽象类的成员可以被访问修饰修饰但是不能是私有的。 4.抽象类多用于约束对象的核心基础成员,接口对于用于约束子类的行为。比如类型有哪些行为(方法)。 5.接口成员如果变动的话,实现子类全部都要变动,抽象只有抽象成员变动了子类才要变动。 6.接口不允许定义字段,抽象允许定义字段,但是不允许定义抽象字段。
最有精华的两句话
参考的大牛的博客------>传送门
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论