xml地图|网站地图|网站标签 [设为首页] [加入收藏]

多态之抽象类与接口的一点收获

来源:http://www.ccidsi.com 作者:集成经验 人气:137 发布时间:2019-05-03
摘要:多态之抽象类与接口的相似点及差别点,刚上学的一点获得,可能不是很完整,借鉴看摄像及部分被人写的篇章本人写的下的片段经验!以便之久复习使用! c#多态之抽象类与接口的一点获得

多态之抽象类与接口的相似点及差别点,刚上学的一点获得,可能不是很完整,借鉴看摄像及部分被人写的篇章本人写的下的片段经验!以便之久复习使用!

c#多态之抽象类与接口的一点获得~~,

多态之抽象类与接口的相似点及区别点,刚上学的一点获取,或者不是很完整,借鉴看录制及片段被人写的篇章自个儿写的下的部分体验!以便之久复习使用!

一、抽象类

    (1) 抽象方法只作注明,而不含有实现,能够视作是绝非完毕体的虚方法
    (贰) 抽象类不可能被实例化
    (叁) 抽象类能够但不是必须有抽象属性和虚幻方法,不过假使有了画饼充饥方法,就一定要把这么些类声明为抽象类
    (四) 具体派生类必须覆盖基类的虚幻方法
    (伍) 抽象派生类能够覆盖基类的悬空方法,也能够不掩盖。假诺不掩盖,则其实际派生类必须覆盖它们。如:

using System;

public abstract class A //抽象类A
{
    private int num=0;

    public int Num //抽象类包涵属性
    {
        get
        {
            return num;
        }
        set
        {
            num = value;
        }
       
    }

    public virtual int getNum() //抽象类包括虚方法
    {
        return num;
    }

    public void setNum(int n) // //抽象类包括普通方法
    {
        this.num = n;
    }

    public abstract void E(); //类A中的抽象方法E
   
}

public abstract class B : A //由于类B继承了类A中的抽象方法E,所以类B也成为了抽象类
{
   
}

public class C : B
{
    public override void E() //重写从类A继承的用空想来安慰自己方法。假设类B本身还定义了充饥画饼方法,也亟须重写
    {
        //throw new Exception("The method or operation is not implemented.");
    }
}

public class Test
{
    static void Main()
    {
        C c = new C();
        c.E();
    }
}

二、接 口

    (1) 接口不可能被实例化
    (2) 接口只可以分包方法表明
    (三) 接口的分子包罗方法、属性、索引器、事件
    (四) 接口中不能够包涵常量、字段(域)、构造函数、析构函数、静态成员。如:

public delegate void EventHandler(object sender, Event e);

public interface ITest
{
    //int x = 0;

    int A
    {
        get;
        set;
    }

    void Test();

    event EventHandler Event;
   
    int this[int index]
    {
        get;

        set;
    }
}

    (伍) 接口中的全部成员默以为public,因而接口中无法有private修饰符
    (6) 派生类必须达成接口的具备成员
    (柒) 多个类能够一向实现多少个接口,接口之间用逗号隔断
    (八) 3个接口能够有多少个父接口,实现该接口的类必须贯彻全体父接口中的全体成员

三、抽象类和接口
    相同点:
    (一) 都得以被一连
    (2) 都无法被实例化
    (3) 都能够包括方法证明
    (四) 派生类必须落成未落成的办法
    区 别:
    (一) 抽象基类能够定义字段、属性、方法注脚。接口只好定义属性、索引器、事件和章程注明,无法包含字段。
    (2) 抽象类是几个不完全的类,供给更为细化,而接口是三个行为规范。微软的自定义接口总是后带able字段,注脚其是抒发1类“笔者能做~~”
    (3) 接口能够被多种得以落成,抽象类只好被单纯承袭
    (4) 抽象类越多的是概念在壹多元紧密有关的类间,而接口大好多是涉及疏松但都达成某一职能的类中
    (5) 抽象类是从壹多种有关对象中架空出来的定义, 因而反映的是东西的内部共性;接口是为着知足外部调用而定义的二个效益约定, 由此反映的是东西的表面特征
    (陆) 接口基本上不持有持续的别的具体特点,它只是承诺了能力所能达到调用的秘技   
    (柒) 接口能够用于匡助回调,而持续并不富有那性子子
    (八) 抽象类落成的具体方法默感觉虚的,但得以达成接口的类中的接口方法却默认为非虚的,当然你也得以注脚为虚的
    (9) 假使抽象类完结接口,则足以把接口中方法映射到抽象类中作为抽象方法而不必落成,而在抽象类的子类中贯彻接口中方法

假如有错漏,敬请我们过来,纠错,补充!

多态之抽象类与接口的相似点及分裂点,刚上学的一点获取,也许不是很完整,借鉴看摄像及片段被人写...

一、抽象类

    (一) 抽象方法只作表明,而不包含实现,能够看作是从未有过落成体的虚方法
    (二) 抽象类无法被实例化
    (③) 抽象类能够但不是必须有抽象属性和抽象方法,可是若是有了抽象方法,就必将在把这几个类表明为抽象类
    (肆) 具体派生类必须覆盖基类的抽象方法
    (五) 抽象派生类能够覆盖基类的架空方法,也能够不掩盖。就算不掩盖,则其现实派生类必须覆盖它们。如:

using System;

public abstract class A //抽象类A
{
    private int num=0;

    public int Num //抽象类包罗属性
    {
        get
        {
            return num;
        }
        set
        {
            num = value;
        }
       
    }

    public virtual int getNum() //抽象类包括虚方法
    {
        return num;
    }

    public void setNum(int n) // //抽象类包蕴普通方法
    {
        this.num = n;
    }

    public abstract void E(); //类A中的抽象方法E
   
}

public abstract class B : A //由于类B承接了类A中的抽象方法E,所以类B也化为了抽象类
{
   
}

public class C : B
{
    public override void E() //重写从类A承袭的聊以自慰方法。倘使类B自身还定义了充饥画饼方法,也亟须重写
    {
        //throw new Exception("The method or operation is not implemented.");
    }
}

public class Test
{
    static void Main()
    {
        C c = new C();
        c.E();
    }
}

本文由68399皇家赌场发布于集成经验,转载请注明出处:多态之抽象类与接口的一点收获

关键词: 68399皇家赌场

上一篇:CSS3的开发框架

下一篇:没有了

最火资讯