C#继承知识点

继承
1、定义
Why:解决功能重复问题
What:一个类具有另一个类的属性和方法,这个类叫子类(派生类),另一个类叫父类(基类、超类)
继承的关键符号 :(冒号)
特征:
1)子类继承了父类的属性和方法(public、protected),但是构造方法不能被继承
2)子类使用构造方法调用父类构造方法用 base()
3)创建子类对象时,系统默认先调用父类构造方法,然后再调用子类构造方法
4)子类使用父类的属性和方法用 base 关键字(public、protected)
注意:父类有有参构造方法时,要求父类必须有一个无参构造方法或子类构造方法调用父类有参构造方法
好处:
1)继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。(拓展新功能)
2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。
4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

2、重写(override)
重写:在子类和父类中,子类中的方法名称和父类方法名称相同,参数相同
重载(overload):在同一个类中,方法名称相同,参数不同(个数、类型),与返回值无关

3、虚方法(virtual)
在某基类中声明 virtual 并在一个或多个派生类中被重新定义的成员方法称为虚方法。
在基类的函数中声明关键字virtual,就可以在其派生类中通过关键字override重写该方法。重写后的virtual方法依旧是virtual方法。

4、sealed关键字
C#提供了一个sealed 修饰符,此修饰符会阻止其他类从该类继承。

5、习题
实现如下类之间的继承关系,并编写Music类来测试这些类
在这里插入图片描述

class Instrument
  {
    
    
    public virtual void Play()//虚方法
    {
    
    
     Console.WriteLine("弹奏xxx!");
    }
   }
class Wind:Instrument
 {
    
    
   public override void Play()//重写方法
    {
    
    
     Console.WriteLine("弹奏wind!");
    }
   public void Play2()
    {
    
    
     Console.WriteLine("调用wind的play2");
     }
  }
class Brass:Instrument
  {
    
    
   public override void Play()//重写方法
    {
    
    
     Console.WriteLine("弹奏Brass!");
    }
   public void Play2()
    {
    
    
      Console.WriteLine("调用brass的play2");
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44706943/article/details/125958659