面向对象编程的基本特征是继承,多态和封装。完全支持这些功能的任何编程语言都是完整的面向对象的编程语言,而支持全部三个功能但不完全支持所有功能的任何语言都是部分面向对象的编程语言。
继承用于提供代码可重用性的概念。
多态使语言能够在不同的实例上执行不同的任务。
封装使数据抽象(数据的安全性或隐私性)成为可能。在面向对象的编程语言中,封装是在class的帮助下实现的。
这是C++被称为部分或半面向对象语言的原因:
- 主要函数在该类之外:C++支持面向对象的编程,但是OO不是该语言固有的。您可以编写有效的,编码正确的,样式精美的C++程序,而无需使用任何对象。
在C++中,main函数是强制性的,它首先执行,但它位于类之外,并从那里创建对象。因此,在这里创建类成为可选操作,我们可以在不使用类的情况下编写代码。#include
using namespace std; int main() { cout << "Hello World"; return 0; } 在Java,主要功能是首先执行的,而在必需的类中则是主要的函数。因此,如果没有Class,我们将无能为力。为了执行与上述相同的操作,我们需要将类设为:
class hello { public static void main(String args[]) { System.out.println("Hello World"); } }
- 全局变量的概念:在C++中,我们可以全局声明一个变量,该变量可以从任何地方访问,因此,它不能为数据提供完全的隐私,因为不能限制任何人访问和修改这些数据,因此,它提供了部分封装,而在Java,我们只能在类内部声明变量,并且可以为其提供访问说明符。
#include
using namespace std; // Global variable declaration: int g = 50; int main () { // global variable g cout << g; // Local variable g g = 20; cout << g; return 0; } 输出:
50 20
因此,在Java,基本上每个数据都是由用户显式询问的,是否应该访问。
- 朋友函数的可用性:朋友类朋友类可以访问其他被声明为朋友的类的私有和受保护成员。有时允许特定的类访问其他类的私有成员很有用。
因此,C++可能再次违反了面向对象的功能。
相关文章:为什么Java不是纯粹的面向对象的语言?
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。