C#中类的继承与多态

    为了提高软件模块的可复用性和可扩充性,以便提高软件的开发效率,我们总是希望能够利用前人或自己以前的开发成果,同时又希望在自己的开发过程中能够有足够的灵活性,不拘泥于复用的模块。这就引出了面向对象程序设计语言C#中两个非常重要的特性:继承和多态。

    继承是实现代码重用的重要机制。使用继承可以在类之间建立一种相交关系,使得新定义的类继承已有的类的特征和能力,而且可以加入新的特性或者修改已有的特性建立起类的新层次。C#中提供了类的继承机制,创建新类所根据的基础类称为基类(Base Class)或父类;新建的类叫扩充类或派生类或子类。

     

注意:

1、继承是可以传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object类作为所有类的基类。

2、扩充类可以添加新的成员,但不能除去已经继承的成员的定义。

3、派生类只能从一个类中继承,可以通过接口实现多重继承。

 多态

    面向对象程序设计中的另外一个重要概念是多态性。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类重载基类中的虚函数型方法来实现。   

在面向对象的系统中,多态性是一个非常重要的概念,它允许客户对一个对象进行操作,由对象来完成一系列的动作,具体实现哪个动作、如何实现由系统负责解释。

    实现通过多态性可以通过继承实现,也可以通过抽象类、接口实现多态性。

    在C#语言中,定义的方法默认都是非虚拟的(non-virtual),既不允许重写这些方法,但是基类中的方法使用了virtual修饰符以后,该方法就变成了虚拟方法。在扩充类中,既可以重写基类的虚拟方法,也可以不写。要注意重载和覆写。重载是:方法名相同、参数列表不相同、返回值类型可以不相同;覆写则是子类中为满足自己的需要来重复定义某个方法的不同实现,需要使用override关键字来实现覆写,只有虚方法和抽象方法才能被覆写。覆写要求方法名称、参数列表、返回值类型都相同。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            圆 tt = new 圆();   继承
            Console.WriteLine(tt.GetSides());

            方 dd = new 方();
            Console.WriteLine(dd.GetSides());

            Sharp ss = new 圆();   多态
            Console.WriteLine(ss.GetSides());
        }
    }
    abstract public class Sharp
    {
        public abstract int GetSides();
    }
    public class 圆 : Sharp
    {
        public override int GetSides()
        {
            //throw new NotImplementedException();
            return 1;
        }
    }
    public class 方 : Sharp
    {
        public override int GetSides()
        {
            //throw new NotImplementedException();
            return 2;
        }
    }
 
}
             通俗不严谨的来说,继承是子类继承父类;多态是父类使用子类的方法。

    初次接触C#,一门崭新的语言。可能会有些晦涩,有些难懂,但是希望能以新的姿态去面对,保持好的态度与精神。

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值