C#基础学习第三篇:继承

来源:互联网 发布:中航led控制软件 编辑:程序博客网 时间:2024/06/03 14:33

1.继承的类型

实现继承和接口继承
实现继承:表示一个类型派生于一个基类型,它拥有该基类型的所有成员字段和函数。
接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。

多重继承:
c#不支持多重实现继承,支持多重接口继承

结构和类:
结构不支持继承,结构派生自System.ValueType,类派生自System.Obejct

实现继承:
基类:

class MyClass{}

继承基类:

class MynewClass : MyClass{}

如果类或者结构也派生自接口,则用逗号分隔列表中的基类和接口
虚方法:
把一个基类函数声明为virtual,就可以在任何派生类中重写改函数:

    class MyBaseClass    {        /// <summary>        /// 虚方法,可以在任何继承该类的子类中重写        /// </summary>        /// <returns></returns>        public virtual string VirtualMethod()        {            return "this is VirtualMethod";        }    }

也可以把属性声明为virtual,对于虚属性或者重写属性,语法和虚方法一样

C#虚函数的概念和标准OOP的概念一样:可以再派生类中重写虚函数,在调用方法时,会调用该类对象的合适方法。C#要求派生类的函数重写另一个函数时,要使用override关键字显示声明:

    class MyClass:MyBaseClass    {        /// <summary>        /// 重写父类的方法        /// </summary>        /// <returns></returns>        public override string VirtualMethod()        {            return base.VirtualMethod();        }    }

隐藏方法:
如果签名相同的方法在基类和派生类都进行了声明,但该方法没有分别声明virtual和override,派生类方法就好隐藏基类方法。
在C#中隐藏一个方法应该使用new关键字声明

    class YouClass:MyClass    {        private new void Play()        {        }    }

调用函数的基类版本:
base
抽象类和抽象函数
c#允许把类和函数声明为abstract,抽象类不能实例化,而抽象函数不能直接实现,必须在非抽象类中重写,如果类包含抽象函数,则该类也是抽象的,也必须声明为抽象的
密封类和密封方法
c#允许把类和方法声明为sealed,对于类,这表示不能继承该类,对于方法表示不能重写改方法。
修饰符
可见性修饰符:
这里写图片描述
不能把类定义为protected,private,protected internal因为这些修饰符对于包含在名称空间中的类型没有意义。
其他修饰符:
这里写图片描述
这里写图片描述

接口:
如果一个雷派生自一个接口,声明这个类就会实现接口的某些函数。

    public interface Mclass    {        void dispose();    }    class YouClass:MyClass, Mclass    {        public void dispose()        {        }        private new void Play()        {        }    }

定义和实现接口:

    public interface Mclass    {        void dispose();        decimal balane { get; }    }

ps:接口名称一般用I开头

原创粉丝点击