[OOP]面向对象的一些基础知识

主要摘自《大话设计模式》的附录部分


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

2.如果子类继承于父类,第一,子类拥有父类非private的属性和功能,第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能,第三,子类还可以以自己的方式实现父类的功能。

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

4.继承是有缺点的,那就是父类变,子类不得不变,另外继承会破坏包装,父类将实现细节暴露给子类。显然,继承是一种类与类之前强耦合的关系

5.多态的注意点:第一,子类以父类的身份出现,第二,子类在工作时以自己的方式来实现,第三,子类以父类的身份出现时,子类特有的属性和方法不可以使用

6.多态的原理是当方法被调用时,无论对象是否被转换成其父类,都只有位于对象继承链最末端的方法实现会被调用。

7.没有学过设计模式,那么对多态,乃至对面向对象的理解多半都是肤浅和片面的。 

8.抽象类与接口的异同点:抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但可实现多个接口等等。

第一,类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。接口是对类的局部行为进行的抽象,而抽象类是对类整体的抽象。

第二,如果行为跨越不同的对象,可使用接口,对于一些相似的类对象,用继承抽象类

第三,从设计角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确定,预先定义



你可能感兴趣的:(面向对象)