面向对象编程
(OOP:Object Oriented Programming)
OOP面向对象编程指:
用面向对象的编程语言把OOD(面向对象设计)模型里的类编写为程序语言。让代码更容易理解,更容易管理。
具体的属性(成员变量/变量)和数据类型在
设计和分析
阶段就决定了。
面向对象程序设计以
对象
为核心,该方法认为程序由一系列对象组成。
类是对现实世界的抽象
,包括表属性和操作,
对象是类的实例化
。
对象间通过
消息
传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。
用程序模拟人类思维,真实世界的概念。
Java和C++
都是面向对象语言。
最大的区别在于,Java 是
解释语言
,需要在JVM虚拟机上进行解释后,再进行编译、运行;而C++可以直接编译、运行。
因此,Java是跨平台的语言,但因为要在虚拟机上进行解释,封装程度更高,因此接触底层更难。
其他区别有:
1.Java中没有指针、联合体和结构体。
2.C++可以多重继承,Java只能通过接口实现相同功能。
3.Java 有⾃动内存管理机制,不需要程序员⼿动释放⽆⽤内存。
4.C中有’\0’结束符,Java里没有这一概念。
类与对象
Java:变量/属性、
方法
C++:成员变量、成员函数
封装、继承和多态
面向对象语言的特性
封装
:隐藏信息,把抽象数据类型(类)的属性和方法(操作)封装在内部,这样用户在使用时通过接口来访问对象,不需要知道内部细节。
e.g. 把类的属性和方法private私有化,外部就无法直接调用它们。
继承
:
1.子类拥有父类非private私有的属性和方法。
2.子类可以拥有自己属性和方法,即可以对父类进行扩展。
3.子类可以用自己的方式实现父类的方法。
ps. protected关键字允许子类和同一个包里的类自由调用。
继承的缺陷:
1.父类变,子类就必须变。
2.破坏了封装。子类可以直接访问父类。
3.继承是一种强耦合关系。
耦合
:对
模块间关联程度
的度量。模块间的耦合度是指模块之间的依赖关系,包括控制、调用、数据传递关系。
耦合强,模块间独立性低。
多态
:
宏观:不同的
对象
接收到相同的
消息
,所表现出来的动作和
结果
不同。
微观:在一组对象的一个类中,用一样的方式调用同名函数,调用的函数具体内容不同。
关于面向过程:
过程(procedure),无返回值。
函数(function),有返回值。
函数(过程)是最小的模块封装单位。