用JAVA编程还是有些时间了,发现对很多概念性的东西还不是很了解,可能有些在平时的编程开发中已经用到了,但还缺少一个归纳性的认识。学而不思则罔,所以也查查资料,把面向对象设计的基本原则小结一下。
提到面向对象的设计,一般都会提到“三大特征”:封装、继承和多态。这三个概念都比较基础,借用网上的资源来记录下:
封装
1、在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。
2、将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
继承
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”、“父类”或“超类”。
继承的过程,就是从一般到特殊的过程。
多态
多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
多态是一种机制、一种能力,而非某个关键字。它在类的继承中得以实现,在类的方法调用中得以体现
实现多态,有二种方式,覆盖,重载。
覆盖,是指子类重新定义父类的虚函数的做法。
重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
这三大特征可以用一张图来表示:
另外在设计开发过程中还有一些总结出设计原则:
1. 开闭原则(the open closed principle)OCP
思想:一个对象对扩展性开发,而对修改性关闭。它的意思是说对类的改动是通过增加代码,而不是改动现有代码实现的。
方法:多用抽象和多态。