封装
每个对象都能包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。
封装的好处
l 良好的封装能够减少耦合。
l 类内部的实现可以自由地修改。
l 类具有清晰的对外接口。
继承
对象的继承代表了一种“is - a”的关系,如果两个对象A和B,可以描述为“B是A”,则表明B可以继承A。猪是动物,就说明了猪和动物之间是继承与被继承的关系。继承者是对被继承者的特殊化,因为它除了被继承的特性之外,还具备了自己独有的特性。
继承中的子类与父类关系
l 子类拥有父类非private的属性和方法。
l 子类具有自己的属性和方法,即子类可以扩展父类没有的属性和方法。
l 子类还可以以自己的方式实现父类的方法(方法重写override)
继承的缺点是破坏包装,父类的实现细节暴露给子类,增大两个类的耦合性。
多态
多态表示不同的对象可以执行相同的动作,但要通过自己的实现代码来执行。其原理是当方法被调用是,无论对象是否被转换为其父类,都只有位于对象继承链最末端的方法实现会被调用。也就是说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的。
多态中的子类与父类关系
l 子类以父类的身份实现。
l 子类在执行时以自己的代码来实现。
l 子类以父类的身份实现时,子类自己的属性和方法不能使用。
为了使子类完全接替来自父类的类成员,父类必须讲成员声明为虚拟的。也就是在成员的返回类型之前添加关键字virtual来实现。通常虚拟的是方法,但实际上只是除了字段不能虚拟的之外,属性、事件、和索引器都可以是虚拟的。尽管方法是虚拟的,但虚方法必须有方法体,可以实现某些功能。