1.抽象类

声明方法的存在而不去实现它的类叫做抽象类,抽象类用abstract关键字声明。抽象类主要用来规定某些类的基本特征,继承它的子类必须实现抽象类的抽象成员,否则这个子类也为抽象类。

public abstract class Fruit{public string  vendor { get; set; } //默认为privatepublic abstract float Price { get; } //抽象属性必须是公有的public abstract void GrowInArea(); //抽象方法必须是公有的}

抽象类的实现

public class Apple : Fruit{public override float Price{get{if (vendor == "红富士")return 100;elsereturn 0;}}public override void GrowInArea(){Console.WriteLine("我在南方北方都能生长,我的生产商是:" + vendor + ",我现在的价格是:" + Price);}}

子类继承抽象类,需要override抽象类中的抽象属性和抽象方法,如果有未override的,则子类也必须为抽象类

总结:

1、抽象类中的抽象属性和抽象方法必须是公有的,因此必须有public修饰符
2、子类必须override抽象类中的所有抽象属性和抽象方法,如果没有全部override,那么子类必须是抽象类
3、抽象类中可以有非抽象属性和非抽象方法,也可以是私有或者公有,但是如果是私有的话子类就不能访问,无意义,所以一般情况下都设置为公有
4、有抽象方法或抽象属性的类一定是抽象类,抽象类中的属性或方法不一定都是抽象的

参考https://www.cnblogs.com/adawoo/p/6434009.html

2.接口

接口类似抽象类,它是用来描述不同类之间一组相关行为的一种契约,主要用来表示不同类之间的共有特征

interface IHotDrink{//是否添加糖bool Milk { get; set; }//添加糖的块数int Sugar { get; set; }int AddSugar(int amount);}class CupOfCoffee : IHotDrink{//咖啡的品牌public string BeanType;bool _milk;bool IHotDrink.Milk{get{return _milk;}set{_milk = value;}}int _sugar;int IHotDrink.Sugar{get{return _sugar;}set{_sugar = value;}}int IHotDrink.AddSugar(int amount){_sugar = amount;return _sugar;}}

3.接口的抽象类的相同点和区别

相同点:

1)接口和抽象类都不能实例化

2)接口都可以被子类继承

3)子类必须实现接口和派生类的抽象成员

区别:

1)抽象类只能继承自一个基类,接口可以继承自多个接口

2)抽象类可以包含字段、属性、方法,接口只能包含属性,方法,索引器,事件,不能包含字段,构造函数、析构函数和静态成员或常量

3)抽象类可以包含抽象方法和实例方法,接口只包含抽象方法,不能有方法实现。

4)抽象类抽象成员必须显式用public修饰,接口默认为public,且不用public修饰,接口方法不能用abstract或者virtual修饰

转载于:https://www.cnblogs.com/lidaying5/p/10515251.html

12.C# 接口和抽象类的区别相关推荐

  1. 【转载】接口和抽象类的区别 --相信你看完不会再混淆了

    原文地址:http://www.cnblogs.com/huihui-gohay/archive/2009/12/13/1623070.html 我想,对于各位使用面向对象编程语言的程序员来说,&qu ...

  2. java接口和抽象类的区别和作用

    java接口和抽象类的区别和作用 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过(implements)接口的方 ...

  3. 接口和抽象类的区别与联系

    文章目录 一.抽象类的基础语法 二.接口的基础语法 三.接口在开发中的作用 四.接口和抽象类的联系 4.1 都不能被实例化 4.2 都可以包含抽象方法 五.接口和抽象类的区别 5.1 二者设计目的上的 ...

  4. python接口和抽象类的区别_接口和抽象类有什么区别?

    最近团队在招人:阿里新零售事业群CBU技术部招Java高级&专家,团队主要负责B2B工业品牌业务,坐标杭州滨江,有兴趣的小伙伴私戳我. **************************** ...

  5. java 关注公众号没有调接口_高频面试题:接口和抽象类的区别

    作为一个基础的Java高频面试题,是所有Java面试者必须烂熟于心的.当然不能死记硬背,可以通过实际地写几个小demo,边实际操作边理解,既能感受到编程的快乐,更重要的是真的理解记住了二者的区别. 此 ...

  6. Java接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)

    前言引入 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 我的 ...

  7. 接口与抽象类的区别和联系

    接口 1.因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但是可以实现多个接口,同时接口本身也可以继承多个接口. 2.接口里面的成员变量默认是public static final类 ...

  8. 接口和抽象类的区别?

    接口和抽象类的区别? 我先来说说它们俩在语法上的区别吧,然后再来谈谈我的个人理解. 抽象类可以有具体的方法和属性,  接口只能有抽象方法和常量. 抽象类使用abstract修饰,接口使用interfa ...

  9. 接口与抽象类的区别,为什么要用接口,抽象类不香吗?

    接口是一种比较特殊的抽象类(个人理解) 接口与抽象类的区别: 最直观来说: 接口: 接口中变量是常量,所以接口中不能有构造方法.因为构造方法最大的作用是给对象赋值或改值(个人理解)和创建对象.因为变量 ...

  10. java接口和抽象类的区别(经典面试题)

    java接口和抽象类的区别(经典面试题) 要了解接口和抽象类的区别,首先需要明白接口和抽象类的定义. 1.抽象类 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可 ...

最新文章

  1. java后端判断用户是否关注公众号
  2. c++读取文件–结束条件的判断
  3. 吴恩达神经网络和深度学习-学习笔记-2-激活函数
  4. 【初级02】java JVM核心技术(2)开发工具和GC策略
  5. 通用预处理器宏assert()的用法
  6. php本地如何开启websocket遇到的坑
  7. html个性签名,经典的个性签名设计
  8. c# 判断时间是否在 某一时间段内
  9. 计算机操作系统-运行机制、体系结构
  10. 代码详解:以股票预测为例,揭秘时间序列预测
  11. Uber自动驾驶车祸判决:人没监督车?车没监督人?
  12. 金蝶osf接口开发_GitHub - terminiter/osf-openstack-training
  13. 和Leo一起做爱线段树的好孩子之火车运输
  14. Mac OS--终端
  15. matlab的自定义常数是a,Simulink仿真入门到精通(二) Simulink模块
  16. “xxx“不是内部或外部命令,也不是可运行的程序
  17. 20170204老男孩用过的一些运维软件
  18. 创建型设计模式-----原型模式(浅克隆、深克隆)
  19. 大连各区IP划分明细
  20. 数据库实验六 数据库的完整性

热门文章

  1. pcl1.8.1在VS2017中编译遇到pop_t找不到标识符的问题的解决办法
  2. spark sql读取hive底层_SparkSQL读取Hive数据插入Redis
  3. 区块链 共识算法 分类
  4. 区块链 以太坊 验证区块
  5. 区块链 以太坊 合约 创建、执行 详解
  6. Java保存class文件,[转载]Class文件在JVM中如何存储
  7. override java field_JAVA方法的重载(overload)和覆盖(override)
  8. java中常用的类——Math类
  9. ccfcsp化学方程式java_化学方程式-ccf
  10. apicloud链接访问本地数据库