1.继承
继承具有单一性,也就是说一个类只能有一个直接的父类。(就类似人类只能有一个亲生父亲一样)。
多个类可以继承同一个父类。(就类似人类一个父亲可以有多个子女)。
多层继承是可以的,即一个类的父类可以再去继承其他类,例如C类继承自B类,B类又继承自A类。这时C类也可以称作A类的子类。
简而言之就是说,继承的意思是:编写一个新类时可以通过继承一个类的方式类自动拥有该类中的所有成员,除了构造方法,和析构函数
继承一个类就在你创建一个新类的时候在类名后面 加个冒号然后写上你要继承的父类名就可以了
using
2.继承时构造方法的执行过程
继承时构造方法的执行过程就是在对象在被创建时(即实例化对象时),它先去调用父类的构造方法,然后再去调用自己的构造方法。所以的它执行步骤就是
1.实例化对象
2.调用父类的构造方法
3.调用自身的构造方法
using
如果说父类又两个构造方法,一个是无参的构造方法,还有一个是有参的构造方法,默认是调用无参的构造方法,但是如果说我们想让系统调用有参的构造方法,就需要在子类的构造方法后面加上:base(参数名)
using
3.隐藏基类方法
子类在继承父类是可以对父类的成员进行扩展,如果子类和父类中出现同名的方法,那么编译器可能会不明确你要调用的是那个父类的方法还是子类的方法,所以为了解决这个问题,你就可以在子类的同名方法中加上关键词new,就可以默认调用子类的方法,从而隐藏了父类的方法
这里的话下面就有了警告
using
4.装箱与拆箱
在实际开发中,某些方法的参数类型是引用类型,但是如果调用时传入的是值类型,此时需要装箱操作。同样当一个方法返回值类型是引用类型,但用来接收返回值的变量为值类型,那么就需要拆箱操作。
简单的来说,装箱就是将值类型转换为引用类型,拆箱就是将引用类型转换为值类型
值类型是被分配在栈上,变量包含变量实例,使用效率高,引用类型是被分配在托管堆,变量包含实例的指针,通过此指针引用其实例。引用类型的性能要比值类型差很多,因此要尽量使用值类型,少用引用类型。
装箱和拆箱的本质就是数据存储在栈与堆的变更,因此频繁进行装箱和封箱操作会影响运算效率,特别是装箱操作,所以要减少相关操作
减少装箱的相关操作有1,尽量将装箱操作放置循环体外。2.通过重载方法,接口,或泛型来避免装箱和拆箱操作
namespace