Ⅰ.抽象类

1.抽象类、抽象方法

抽象类:通常情况下,它里面有抽象方法,类前面定义了一个abstract

抽象方法:只定义了方法的名称,没有定义方法的内容

2.为什么要使用抽象类、抽象方法?

都是为了继承

3. 怎么去定义抽象类,抽象方法?

abstract +类名,abstract+方法名

   4.特点:

❶.抽象类不能被实例化;

❷.抽象方法的作用是为子类提供一个统一的接口,抽象方面里面只有声明,没有实现;

❸. 一个类一旦继承了一个抽象类,就必须实现对该抽象类里面所有的抽象方法的实现;

  1. public abstract class Person
  2. {
  3. public abstract void A();
  4. public abstract void B();
  5. }

Person

  1. public class C :Person
  2. {
  3. public override void A()
  4. {
  5. Console.WriteLine("China");
  6.  
  7. }
  8. public override void B()
  9. {
  10. Console.WriteLine("nihao");
  11. }
  12. public static void Main()
  13. {
  14. C me = new C();
  15. me.A();
  16. }
  17. }

class C :Person

❹.一个抽象类里面可以有非抽象方法,但是一旦一个类里面有抽象方法,该类就为抽象类了;

❺.抽象方法在声明后用一个;结束,不需要用{};

❻.抽象方法在覆写的时候不需要声明为虚方法;

Ⅱ.接口

接口:可以看成一个更加严格意义上的抽象类,当是一个接口的时候,它里面只能是抽象方法,而不能有非抽象方法

1、怎么去定义一个接口?

Interface +类名

2、怎么去定义接口里面的方法?

eg:

void A();

也可以加上参数void A(string name);

注意:千万不能这么写,void B(){};//不能这样写,因为接口里面全部都是只定义了方法名,而没有具体的实现过程

4、特点:

❶.接口用来实现多继承,一个类只能有一个父类,但可以继承于多个接口class A :B,C

(可以是继承这个接口class Animal:Interface1,也可以继承另一一个接口class Animal:Interface1,Interface2)

❷. 接口是一种特殊的抽象类,它里面规定得更严格,里面的方法只能为抽象方法

❸.定义一个接口的时候,一般为缺省,即interface +类名,前面自动加上了public abstract,定义接口中的方法时,也只需要写返回类型 +方法名即可,因为也默认为public abstract

❹.接口里面的所有成员都是公共的

❺.一个类继承与一个接口,就必须完成该接口中所有方法的实现

❻.接口不能包含字段,构造函数,静态变量,或者常量等

5、接口用在什么地方?

接口是多继承,接口的作用相当于一个工厂要生产插座,提供一个模型,模型没有提供实现的具体方法,具体的实现过程,只是定义了一个模型。

6、为什么要使用接口?

就是为了继承,统一规范。

  1. interface Interface1
  2. {
  3. //接口里面只能用抽象的方法
  4. void A();
  5. void B(string Name);//string Name参数可以写
  6. }

Interface1

  1. class Animal:Interface1
  2. {
  3. //一个类继承了一个接口,就要去完成接口里面所有的override,必须要override
  4. public override void A()
  5. {
  6.  
  7. }
  8. public override void B()
  9. {
  10.  
  11. }
  12. public Animal()
  13. {
  14. Console.WriteLine("我是动物类!");
  15. }
  16. }

Animal:Interface1(继承接口)

 Ⅲ.抽象类和接口有什么区别?

区别:

1.抽象类:有抽象的方法,也有非抽象的方法;

接口:是更加严格意义上的抽象方法,里面必须全部是抽象方法;

2.抽象类:抽象类里面的成员可以是私有的private,公共的public,受保护的protected;

接口:里面所有成员都是公共的public;

共:

1.一个类继承一个抽象类或者一个接口,它必须要override抽象类/接口里面的所有方法。

C#[抽象类,接口]的更多相关文章

  1. 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait

    [源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...

  2. python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)

    一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名 ...

  3. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)

    一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...

  4. 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装

    抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...

  5. “全栈2019”Java第一百零六章:匿名内部类与抽象类接口注意事项

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  7. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...

  8. C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )

    你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )   一个家庭 相当于 一个空间,这个空间里 有 很多元素,比如 爱,爱这个抽象事物,可能有很多动作,接吻.交流,对于一 ...

  9. 13. 抽象类 & 接口

    一.抽象类 // 抽象类Shape public abstract class Shape { // 1. 成员变量 private String color; // 2. 初始化块 { System ...

  10. 面向对象的理解 抽象类&接口

    一.关于面向对象 1.什么是面向对象     在解释面向对象之前,先说说面向过程.学过C的同学都知道,C就是面向过程的一种语言.那什么是面向过程呢?比方说组装主机,对于面向过程,需要从0开始.买cpu ...

随机推荐

  1. 掌握js模板引擎

    最近要做一个小项目,不管是使用angularjs还是reactjs,都觉得大材小用了.其实我可能只需要引入一个jquery,但想到jquery对dom的操作,对于早已习惯了双向绑定模式的我,何尝不是一 ...

  2. Android开发学习之路-自定义ListView(继承BaseAdapter)

    大三学生一个,喜欢编程,喜欢谷歌,喜欢Android,所以选择的方向自然是Android应用开发,开博第一篇,希望以后会有更多的进步. 最近在做一个记账App的时候,需要一个Activity来显示每个 ...

  3. 初入职场的建议--摘自GameRes

    又开始一年一度的校招了,最近跑了几个学校演讲,发现很多话用短短的一堂职业规划课讲还远远不够,因为那堂课仅仅可能帮大家多思考怎样找到一份合适的工作,并没有提醒大家怎样在工作中发展自己的职业. 见过这么多 ...

  4. CCNA网络工程师学习进程(6)vlan相关协议的配置与路由器简单配置介绍

        前面已经介绍了大部分与vlan技术相关的交换机的协议的配置,更深层次的还有STP协议和以太网端口聚合技术,接着还会简单介绍一下路由器的基本应用.     (1)STP(Spanning-tre ...

  5. CSS三列布局

    × 目录 两侧定宽中间自适应 两列定宽一侧自适应 中间定宽两侧自适应一侧定宽两列自适应三列自适应总结 前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中 ...

  6. unity3d中 刚体(Rigidbody) 碰撞体(Collider) 触发器(Is Trigger)

      刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unity4.x从入门到精通>)解释如下: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可 ...

  7. Docker - Docker基础命令及使用

    Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...

  8. 常用mysql数据库引擎——MyISAM和InnoDB区别

    背景: 昨天做项目时,发现使用事务后回滚不了,后来把数据库引擎从MyISAM换成InnoDB后果断好了,如下图: 正文: MyISAM和InnoDB是mysql常用的数据库引擎,他们的区别如下: 数据 ...

  9. Java 类库和常用类库

    Java 类库概念: Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量的相关类.接口和异常处理类,这些包的集合就是 Java 的类库 包名以 Java 开始的包是 Java 核 ...

  10. 新人学习Android开发遇到的小问题总结

    1. IDE搭建: 搭建android的IDE时,先注意是什么版本的系统,64/32位系统. 通常使用的是Eclipse for android,Android Studio由于还需要FQ,网速慢,所 ...