面向对象基础之二封装继承多态

5.封装

每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。

封装有很多好处,第一、良好的封装能够减少耦合。第二、类内部的实现可以自由地修改。第三、类具有清晰的对外接口。


6.继承

对象的继承代表了一种is-a的关系,如果两个对象A和B,可以描述为B是A,则表明B可以继承A。继承者还可以理解为是对被继承者的特殊化,因为它除了具备被继承者的特性外,还具备自己独有的个性。继承定义了类如何相互关联、共享特性。继承的工作方式是,定义父类和子类,或叫基类和派生类,其中子类继承父类的所有特性。子类不但继承了父亲的所有特性,还可以定义新的特性。

学习继承请记住三句话,如果子类继承于父类,第一、子类拥有父类非private的属性和功能;第二、子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;第三、子类还可以以自己的方式实现父类的功能(方法重写)。

protected 表示继承时子类可以对基类有完全的访问权,也就是说,用protected修饰的类成员,对子类公开,但不对其他类公开。

子类从它的父类中继承的成员有方法、域、属性、事件、索引指示器,但对于构造方法,有一些特殊,它不能被继承,只能被调用。对于调用父类的成员,可以用base关键字。


不用继承的话,如果要修改功能,就必须在所有重复的方法中修改,代码越多,出错的可能就越大,而继承的优点是,继承使得所有子类公共的部分都放在父类,使得代码得到了共享,这就避免了重复,另外,继承可使得修改或扩展继承而来的实现都较为容易。

继承是有缺点的,那就是父类变,则子类不得不变。继承会破坏包装,父类实现细节暴露给子类。继承显示是一种类与类之间强耦合的关系。

当两个类之间具备is-a的关系时,就可以考虑用继承了。


7.多态

面向对象的第三大特性--多态

多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。

第一、子类以父类的身份出现。

第二、子类在工作时以自己的方式来实现。

第三、子类以父类的身份出现时,子类特有的属性和方法不可以使用。

为了是子类的实力完全接替来自父类的类成员,父类必须将该成员声明为虚拟的。这是通过在该成员的返回类型之前添加virtual关键字来实现。

通常虚拟的是方法,字段是不能虚拟的,属性、事件和索引器都可以是虚拟的。

尽管方法可以是虚拟的,但虚方法还是有方法体,可以实际做些事情。然后,子类可以选择使用override关键字,将父类实现替换为它自己的实现,这就是方法重写Override,或者叫做方法覆写。

不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。

多态的原理是当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链最末端的方法实现会被调用。也就说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的。

通过学习设计模式,可以加深对面向对象的理解。


8.重构

类的再封装和再抽象再继承。通过重构改善既有代码的设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值