12.C# 接口和抽象类的区别
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# 接口和抽象类的区别相关推荐
- 【转载】接口和抽象类的区别 --相信你看完不会再混淆了
原文地址:http://www.cnblogs.com/huihui-gohay/archive/2009/12/13/1623070.html 我想,对于各位使用面向对象编程语言的程序员来说,&qu ...
- java接口和抽象类的区别和作用
java接口和抽象类的区别和作用 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过(implements)接口的方 ...
- 接口和抽象类的区别与联系
文章目录 一.抽象类的基础语法 二.接口的基础语法 三.接口在开发中的作用 四.接口和抽象类的联系 4.1 都不能被实例化 4.2 都可以包含抽象方法 五.接口和抽象类的区别 5.1 二者设计目的上的 ...
- python接口和抽象类的区别_接口和抽象类有什么区别?
最近团队在招人:阿里新零售事业群CBU技术部招Java高级&专家,团队主要负责B2B工业品牌业务,坐标杭州滨江,有兴趣的小伙伴私戳我. **************************** ...
- java 关注公众号没有调接口_高频面试题:接口和抽象类的区别
作为一个基础的Java高频面试题,是所有Java面试者必须烂熟于心的.当然不能死记硬背,可以通过实际地写几个小demo,边实际操作边理解,既能感受到编程的快乐,更重要的是真的理解记住了二者的区别. 此 ...
- Java接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)
前言引入 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 我的 ...
- 接口与抽象类的区别和联系
接口 1.因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但是可以实现多个接口,同时接口本身也可以继承多个接口. 2.接口里面的成员变量默认是public static final类 ...
- 接口和抽象类的区别?
接口和抽象类的区别? 我先来说说它们俩在语法上的区别吧,然后再来谈谈我的个人理解. 抽象类可以有具体的方法和属性, 接口只能有抽象方法和常量. 抽象类使用abstract修饰,接口使用interfa ...
- 接口与抽象类的区别,为什么要用接口,抽象类不香吗?
接口是一种比较特殊的抽象类(个人理解) 接口与抽象类的区别: 最直观来说: 接口: 接口中变量是常量,所以接口中不能有构造方法.因为构造方法最大的作用是给对象赋值或改值(个人理解)和创建对象.因为变量 ...
- java接口和抽象类的区别(经典面试题)
java接口和抽象类的区别(经典面试题) 要了解接口和抽象类的区别,首先需要明白接口和抽象类的定义. 1.抽象类 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可 ...
最新文章
- java后端判断用户是否关注公众号
- c++读取文件–结束条件的判断
- 吴恩达神经网络和深度学习-学习笔记-2-激活函数
- 【初级02】java JVM核心技术(2)开发工具和GC策略
- 通用预处理器宏assert()的用法
- php本地如何开启websocket遇到的坑
- html个性签名,经典的个性签名设计
- c# 判断时间是否在 某一时间段内
- 计算机操作系统-运行机制、体系结构
- 代码详解:以股票预测为例,揭秘时间序列预测
- Uber自动驾驶车祸判决:人没监督车?车没监督人?
- 金蝶osf接口开发_GitHub - terminiter/osf-openstack-training
- 和Leo一起做爱线段树的好孩子之火车运输
- Mac OS--终端
- matlab的自定义常数是a,Simulink仿真入门到精通(二) Simulink模块
- “xxx“不是内部或外部命令,也不是可运行的程序
- 20170204老男孩用过的一些运维软件
- 创建型设计模式-----原型模式(浅克隆、深克隆)
- 大连各区IP划分明细
- 数据库实验六 数据库的完整性
热门文章
- pcl1.8.1在VS2017中编译遇到pop_t找不到标识符的问题的解决办法
- spark sql读取hive底层_SparkSQL读取Hive数据插入Redis
- 区块链 共识算法 分类
- 区块链 以太坊 验证区块
- 区块链 以太坊 合约 创建、执行 详解
- Java保存class文件,[转载]Class文件在JVM中如何存储
- override java field_JAVA方法的重载(overload)和覆盖(override)
- java中常用的类——Math类
- ccfcsp化学方程式java_化学方程式-ccf
- apicloud链接访问本地数据库