C#[抽象类,接口]

Ⅰ.抽象类

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抽象类/接口里面的所有方法。

时间: 2024-10-26 07:12:02

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

小知识(五):抽象类&接口

抽象类abstract: 抽象类和抽象方法可以用abstract关键字进行标识.就是没有完全定义的类或方法.所以不能直接实例化操作. 就因为他没完全定义所以不能用sealed关键字进行密封. 抽象方法不含程序主体: public abstract class Student { //抽象方法,不含程序体 public abstract void GetStudentID(); //子类可访问字段 prodected int i; //定义i的属性 public int I { get { ret

普通类 抽象类 接口

首先得搞懂什么是抽象类:一.概念:    在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.    比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆.三角形这样一些具体概念.它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念.正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的

虚函数/纯虚函数/抽象类/接口/虚基类

1.多态 在面向对象语言中,接口的多种不同实现方式即为多态.多态是指,用父类的指针指向子类的实例(对象),然后通过父类的指针调用实际子类的成员函数. 在Java中,没有指针,就直接用父类实例化子类对象 多态性就是允许将子类类型的指针赋值给父类类型的指针,多态是通过虚函数实现的,多态可以让父类的指针有“多种形态”,这是一种泛型技术. 所谓泛型技术,就是试图使用不变的代码来实现可变的算法 2.虚函数 在基类的类定义中,定义虚函数的一般形式: Virtual 函数返回值类型 虚函数名(形参表){ 函数

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

一.关于面向对象 1.什么是面向对象 在解释面向对象之前,先说说面向过程.学过C的同学都知道,C就是面向过程的一种语言.那什么是面向过程呢?比方说组装主机,对于面向过程,需要从0开始.买cpu,显卡,主板,电源,风扇,把这些都通过主板链接到一起.我需要清楚的知道主机组装的每一个步骤. 介绍了面向过程,再说会正题,什么是面向对象?对于上面的装主机过程面向对象会把主机先抽象成一个机箱,机箱里有cpu,显卡,主板,电源.用主机的人,不关心里面是怎么工作的,也不需要知道内部逻辑,只知道插上电源就能用.面

19 抽象类 接口类 封装. 多态

主要内容: 1.  抽象类(接口类): 制定一个规范  : from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def pay(self):pass class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' % self.mon

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

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第一百零六章:匿名内部类与抽象类接口注意事项 下一章 "全栈2019"Java第一百零七章:匿名内部类与构造方法注意事项 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复&quo

Java实训笔记(二)——-抽象类-接口-泛型-集合

1.1方法的可变参数从JDK1.5之后,定义方法时参数的个数可以变化语法:最后一个数据类型后增加3个点注意:1.可变参数只能处于参数列表的最后:2.一个方法中最多只能包含一个可变参数:3.可变参数的本质就是一个数组,因此在调用一个包含可变参数的方法时,既可以传人多个参数,也可以传入一个数组.1.2装箱与拆箱基本数据类型与对应的封装类之间能够自动进行转换,其本质是Java的自动装箱与拆箱过程.-装箱是指将基本类型数据值转换成对应的封装类对象,即将栈中的数据封装成对象存放到堆中的过程.-拆箱是装箱的

PHP基础------抽象类------接口

<?php header("content-type:text/html; charset=utf-8"); //抽象类,抽象类不能被实例化,抽象方法不能有方法体,只能由子类继承去实现,抽象方法用abstract修饰 abstract class Person { abstract function eat(); abstract function say(); } class son extends Person { function eat() { echo "我能

抽象类/接口

回顾:1.重写(override): 1)父子类中,方法签名相同,方法体不同 2)重写方法被调用时,看对象的类型 3)两同两小一大: 3.1)方法名同,参数列表同 3.2)子类返回值类型小于等于父类 3.2.1)void时,必须相同 3.2.2)基本类型时,必须相同 3.2.3)引用类型时,子类小于等于父类(父类大,子类小) 子类抛出的异常小于等于父类-----后期说 3.3)子类的访问权限大于或等于父类2.重写与重载的区别 1)重写(override):父子类,方法名同,参数列表同 “运行期”

【Java】第10讲:抽象类.接口

用处:父类的方法的不确定性,不写实现结果的话就要抽象化(abstract),如下下 隐藏要求,继承抽象类时,必须要实现所有的抽象方法,因为作者不知道子类需要什么,只是提供方法 接口 抽象类可以有实现主体,接口不能有 接口变量可以有变量,必须初始化,final,piblic,static