c#继承中的构造方法那些事

1)子类诞生记:

当子类对象在堆内存中被创建时,会在子类对象内部同时创建一个父类对象,这也就解释了为什么创建好子类后会包含其父类中的所有属性和方法。

咱们专业人士要学会看门道……上图说明什么……子类被创建时,必须要先创建它的父类对象!

2)继承中的构造方法一些特殊规定……

子类的构造方法中必须调用父类的构造方法,且将父类的构造方法写在子类构造方法体的第一行。

若子类构造方法没有显示地调用父类的构造方法,则系统默认调用父类中无参数的构造方法。

(这两条看似变态的规定很好想呀,如上图,子类中必然要包含一个父类的对象,所以才有了“子类的构造方法中必须调用父类的构造方法”)

3)上程序……

注意:C#中子类显示调用父类构造方法的写法!:base(name)(base的作用就是将子类构造方法的形参,传递进父类的构造方法中,从而显示地调用父类的构造方法,不然编译器就会默认调用父类的默认构造,所以父类如果不写默认构造的情况下,编译器就报错)。当然,如果父类有多个构造函数,base这个语句依然会寻找对应的父类构造方法去传递形参。

此程序,如果在Cat构造方法中不显示调用父类Animal的构造方法,则会编译出错!因为父类Animal构造方法中没有无参的构造方法。而不显示调用父类构造方法,按规定子类构造方法会自动调用父类的无参构造方法,但此父类Animal中没有无参的构造方法,所以会出错。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章将会介绍 存储属性的初始赋值自定义构造过程默认构造器值类型的构造器代理类的继承和构造过程可失败构造器必要构造器...
    寒桥阅读 784评论 0 0
  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 1,196评论 0 2
  • 构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置实例中每个...
    莽原奔马668阅读 700评论 0 3
  • 有些东西我们很喜欢,但是失去了就再也回不去了。有些年代我们很怀念,但是失去了就再也回不去了。每个年代的人都有他们的...
    笑流苏阅读 1,111评论 10 21
  • 今天二爷做手术,妈妈过去了。虽然没什么用,但出于人道主义,也能够理解。这个时候用需要有人能够关心,有没有实际用处倒...
    蹒跚幸福阅读 337评论 0 0