【C#学习】继承和多态

本文介绍了C#中的继承和多态概念,包括关键字virtual、override、new的使用,方法的重写与覆盖,以及构造函数和析构函数的调用顺序。通过实例解析了抽象类、抽象方法、密封类和密封方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

涉及到的关键字

  1. virtual 基类里声明虚方法
  2. override 派生类重写基类的虚方法,是多态的关键技术
  3. new 派生类覆盖基类的方法(无论是否为虚方法)
  4. base 派生类显式调用基类的非默认构造函数
  5. abstract 声明抽象类或抽象方法 
  6. sealed 声明密封类和密封方法

基础

C# 不支持多重继承,一个类只能有一个直接基类。重写、覆盖的问题都来自于基类的引用来引用派生类实例的情况。

继承、封装和多态是面向对象编程的三个基本要素。
其成员被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类。

派生类隐式获得基类的除构造函数和析构函数以外的所有成员。
派生类只能有一个直接基类,所以C#并不支持多重继承但一个基类可以有多个直接派生类。
继承是可以传递的
即:
如果 ClassB 派生出 ClassC,ClassA 派生出 ClassB,则 ClassC 会继承 ClassB 和 ClassA 中声明的成员。
复制代码
  class  A
    {
        
public   void  Sum( int  i, int  j)
        {
            
int  sum  =  i  +  j;
            Console.WriteLine(
" I am A ,my sum ={0} " ,sum);
        }
    }
    
class  B : A
    {
        
public   void  Minus( int  i, int  j)
        {
            
int  minus  =  i  -  j;
            Console.WriteLine(
" I am B ,my minus ={0} " , minus);
            this.Sum(3, 4);
        }

    }
     class  InheritanceTest1
    {
        
static   void  Main( string [] args)
        {
            B b 
=   new  B();
            b.Minus(
3 4 );
            Console.Read();
        }
    }

结果:I am B ,my minus=-1 

     I am A ,my sum =  7
复制代码
试想一下,当基类Sum()方法是私有时,派生类还会继承该方法吗?
经过本人测试,没有在B类找到该方法,那么是不是它就没有被继承呢? 其实不是的,私有成员其实已经被继承了,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值