什么是继承
是复用代码,复用概念的一种技术。【代码复用的一种方式】
为什么需要继承
为了保留原有的功能;通过继承可以复用;不用每次都从头开始为了能够对类进行层次性的管理 狗 猫 动物,方便管理多个类【层次,树】
什么情况下用继承
只要用C#写代码,就在使用【无意识】【有意识:刻意用 :父类】没有明确指定父类,默认父类是object; Object是任何类的直接或者间接父类!
继承的语法
写法:class A: B 表示A类继承B类。 单继承 类名:类名1
A类称为子类(派生类),
B类称为父类(基类,超类)
继承中的构造方法
- 构造方法不会继承给子类,
- 但是在创建子类对象时,自动调用父类的构造方法,且父类构造方法先执行,子类构造方法后执行.
- 什么时候调用构造方法:new类时=创建对象的时候 new【1分配内存空间2调用构造方法】
- 当子类创建对象时,默认调用父类的无参构造方法。
如果程序员没有明确的写构造方法,编译器或自动生成一个【无参构造方法】
如果程序员明确的写构造方法,比如写了有参构造,编译器就不给生成无参构造了。
如果父类没有无参构造方法,则报编译错误,
解决方法有两个:
1》.为父类添加无参构造方法,
2》.如果不想在父类中写无参构造方法,则在子类的构造方法中用base关键字指明要调用父类的哪一个有参构造方法。
继承的特点
1、父类中所定义(除私有成员外)都继承给子类【子类拥有父类中所有非私有成员】
2、构造方法不继承给子类【公共,私有】
结论:因为继承,调用父类中的方法,有三种调用法:声明父 New父,声明子 New子,声明父 New子
继承的优点
继承的缺点
耦合度高:父类的改变直接影响到所有的子类,
而不需要通知子类
建议:继承层次不要太深,三层即可尽量选择抽象类来继承
补充继承:
继承:
1 类继承类 单继承 类名:类名1
2 类继承接口【类实现接口】 接口支持多继承=接口支持多实现
3 接口继承接口 【用的少,不能有实现】 多继承 接口1:接口2,接口3
4 结构(struct)可以实现接口,但不能继承【类】
接口与接口之间可继承,且可以多继承
类与类是单继承,类与接口是多实现,接口与接口是多继承