微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++中抽象和封装的区别

1. 抽象:
在面向对象编程中,抽象是获取信息的方法,所需的信息将以最简单的方式获取,即只提取所需的组件,而那些被认为不太重要的组件也不会被注意到。抽象的概念只向用户显示必要的信息。它通过隐藏程序的实现复杂性来降低程序的复杂性。
抽象的例子:

#include <iostream>
using namespace std;

class YiibaiCom {
private:
    // private variables
    int a, b, c;
public:
    void sum(int x, int y)
    {
        a = x;
        b = y;
        c = a + b;
        cout<<Sum of the two number is : <<c<<endl;
    }
};
int main()
{
    YiibaiDemo s;
    s.sum(5, 4);
    return 0;
}

运行结果:

Sum of the two number is: 9

在这个例子中,可以看到抽象是通过使用类来实现的。Yiibai.Com类包含私有成员 abc,它们只能由该类的成员函数访问。

2. 封装:
封装是包含信息的过程或方法。封装是一种将数据隐藏在单个实体或单元中的方法,以及一种保护信息免受外界影响的方法。该方法将数据和函数一起封装在一个类中,这也导致了数据抽象。
封装示例:

#include <iostream>
using namespace std;

class EncapsulationExample {
private:
    // we declare a as private to hide it from outside
    int a;

public:
    // set() function to set the value of a
    void set(int x)
    {
        a = x;
    }

    // get() function to return the value of a
    int get()
    {
        return a;
    }
};

// main function
int main()
{
    EncapsulationExample e1;

    e1.set(10);

    cout<<e1.get();
    return 0;
}

运行结果:

10

在这个程序中,变量 a 被设为私有,因此只能使用类中存在的方法 get()set() 来访问和操作该变量。因此可以说,变量 a方法 set() 以及 get() 已经绑定在一起了,只不过是封装而已。

抽象与封装的区别:

编号 抽象 封装
1 抽象是获取信息的过程或方法 封装是包含信息的过程或方法
2 在抽象中,问题在设计或接口级别得到解决 在封装中,问题在实现层面得到解决
3 抽象是隐藏不需要的信息的方法 封装是一种将数据隐藏在单个实体或单元中的方法,以及一种保护信息免受外部影响的方法
4 可以使用抽象类和接口来实现抽象。 封装可以通过访问修饰符来实现,即私有、受保护和公共。
5 在抽象中,使用抽象类和接口隐藏了实现的复杂性。 在封装中,使用 gettersetter 方法隐藏数据。
6 封装有助于执行抽象的对象。 导致封装的对象不需要被抽象。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐