Ⅰ.抽象类

1.抽象类、抽象方法

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

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

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

都是为了继承

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

abstract +类名,abstract+方法名

   4.特点:

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

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

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

public abstract class Person
{
public abstract void A();
public abstract void B();
}

Person

 public class C :Person
{
public override void A()
{
Console.WriteLine("China"); }
public override void B()
{
Console.WriteLine("nihao");
}
public static void Main()
{
C me = new C();
me.A();
}
}

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、为什么要使用接口?

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

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

Interface1

 class Animal:Interface1
{
//一个类继承了一个接口,就要去完成接口里面所有的override,必须要override
public override void A()
{ }
public override void B()
{ }
public Animal()
{
Console.WriteLine("我是动物类!");
}
}

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. 我心中的核心组件(可插拔的AOP)~第十二回 IoC组件Unity

    回到目录 说在前 Ioc组件有很多,之前也介绍过autofac,castle等,今天再来说一下在微软Nlayer DDD架构里使用的unity组件,今天主要说一下依靠注入,如果希望看拦截的用法,可以阅 ...

  2. EF架构~CodeFirst模型下的数据初始化

    回到目录 我为什么会来 在传统的大型系统设计中,数据库建模是个比开发更早的环节,先有数据库,然后是ORM模型,最后才是开发程序,而这种模型在EF出现后发生了转变,而且有可能将来会被code first ...

  3. struts2学习笔记之十二:struts2对异常的自动处理

    在UserAction类中引发异常,但是不处理 package com.djoker.struts2; import java.util.Date; import org.apache.struts2 ...

  4. 跨终端 Web

    跨终端 Web(移动优先|响应式|HTML5|Hybrid|桌面+移动应用|一线前端负责人联袂推荐) 徐凯  著   ISBN 978-7-121-23345-6 2014年6月出版 定价:55.00 ...

  5. vue.js学习之入门实例

    之前一直看过vue.js官网api,但是很少实践,这里抽出时间谢了个入门级的demo,记录下一些知识点,防止后续踩坑,牵扯到的的知识点:vue.vue-cli.vue-router.webpack等. ...

  6. Android Studio 使用技巧

    1.导入Android Studio 工程的一些技巧 因为Gradle版本的问题,我们在使用AS导入工程的时候,经常会碰到本地没有该项目的Gradle版本,这时候AS就会去下载这个版本的Gradle, ...

  7. EasyUI Datagrid Datetime(EasyUI DataGrid 时间格式化)

    EasyUI DataGrid 时间格式化 方法一: var Common = { //EasyUI用DataGrid用日期格式化 TimeFormatter: function (value, re ...

  8. AMD 和 CMD 的区别有哪些?

    看到玉伯在介绍seajs和requirejs时,说“RequireJS 遵循的是 AMD(异步模块定义)规范,SeaJS 遵循的是 CMD (通用模块定义)规范”. 能否详细(举例)说明下这个2个规范 ...

  9. 通过js获得选择文件的绝对路径

    <form name="thisform" method="get" action="test.jsp" id="thisf ...

  10. poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)

    /* poj 2187 Beauty Contest 凸包:寻找每两点之间距离的最大值 这个最大值一定是在凸包的边缘上的! 求凸包的算法: Andrew算法! */ #include<iostr ...