C#面向对象(二)继承和组合

继承和组合


复用代码的方式:继承和组合
继承:复用代码的一种方式,可以复用代码或概念。
组合:复用代码,不能复用概念。


在C#中,Object类是一切类的直接父类或间接父类。
子类拥有所有父类的非私有成员。
构造函数不能继承
创建子类时,自动调用父类的构造函数,并且父类中的先执行
概念复用:

Dog dog = new Dog();
Animal dog = new Dog();

为什么需要继承/继承的优点
  1. 复用代码,开发效率高;
  2. 复用概念,实现类的层次性管理。

继承的缺点

特点:父类的改变直接影响了所有的子类,而不需要通知子类。
需要这个特点:耦合度高 优点
不需要这个特点:耦合度高 缺点
耦合度高:父类的改变直接影响到所有的子类,而不需要通知子类
建议:
继承层次不要太深,三层即可
尽量选择抽象类来继承 父类抽象类!

为什么需要构造方法?

只要类型需要创建对象,都需要构造方法,因为构造方法是创建对象的唯一通道.
在类中可以定义构造函数,可以不定义构造函数,如果没有定义,
编译器会自动创建一个无参构造函数
构造方法的作用 1》创建对象 唯一途径 【必须】
2》初始化字段 【可选】

为什么要重载构造方法?

//A:构造方法在创建对象的同时,并为对象成员做初始化,通过传递的参数为成员赋值
**一个类可以有多个构造方法。
**当希望得到的对象的初始状态不同,可以使用重载构造方法。

构造方法之间可不可以互相调用

可以,本类构造方法互相调用通过this关键字,
子类调用父类的构造方法通过base关键字

哪种情况适合用继承组织类的关系 is成立!【技巧】

两个或更多个类从概念上是一致的

设计原则:仅仅为了复用代码【复用】,优先组合 实际开发组合用的多!
技巧: A B类 继承 is A is B ,B is A 继承
组合 has

访问修饰符

public->internal->protected->private
internal:同一个项目中可以访问,不能跨项目;
protected:自己类或者派生类可以访问。
Class默认修饰符为internal。

关于访问修饰符的注意事项
  1. 在命名空间中定义的元素无法显示的声明private,protected或protected internal;
  2. 通过base访问父类中的protected, public, internal;
  3. 通过new对象来访问public, internal;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值