当前位置:  开发笔记 > 编程语言 > 正文

OOP中的主要概念

如何解决《OOP中的主要概念》经验,为你挑选了4个好方法。

我曾在接受采访时被问及"OOP的3个主要概念是什么?".我回答说,我认为有4个如下:

遗产

封装

抽象化

多态性

我是对的吗?



1> Steven A. Lo..:

语言面向对象有3个要求:

仅支持封装(对象)的语言不是面向对象的,而是模块化的

支持封装(对象)和消息传递(多态)的语言不是面向对象的,而是基于对象

支持封装(对象),消息传递(多态)和继承(抽象)的语言面向对象的

注意:抽象是一个更普遍的概念; 封装等是抽象的种类,就像子程序是一种抽象一样.见抽象



2> SmacL..:

我会说抽象不仅仅是一个OOP概念,因为你可以在很多非OOP语言中抽象出来.


你可以做什么样的编程*没有*抽象?

3> 小智..:

这四个支柱是你正确的状态

封装.

抽象化

遗产

多态性

封装处理包含数据,仅此而已.

抽象处理数据抽象,即所有这些数据都是真正相关的.想想一家银行,其中包含有关姓名,年龄,地址,眼睛颜色,最喜欢的领带等信息.眼睛颜色和最喜欢的领带真的与银行要求相关吗?不,这是抽象.

继承涉及泛化.可以应用于多个事物的信息.如果某些东西继承了某些东西,那么可以说它是一种更具体的东西.例如,动物.狗是一种动物,所以狗继承自动物.Jack Russell是一种狗,所以Jack Russell继承了Dog.

多态性处理具有多种形式的事物(poly - morph).编程中有两种,

后期绑定,

你引用的东西是它的通用类型,因此编译器不知道在编译时绑定什么.Think方法Overriding.

早期绑定

您使用不同的签名重新定义方法,即 int add(int a, int b) vs double add(double a, double b)

这些本质上是面向对象的基本原则.这些之间存在很多重叠,因此明确了解每个方法的含义非常重要.



4> Konrad Rudol..:

OOP的问题在于没有人愿意给出正确,简洁,一致同意的定义。特别是,我想指出的是,您提到的所有方面都可以在不使用面向对象的情况下付诸实践!

可以做到这一点的两种类型系统是Haskell类型系统,从本质上讲,Haskell类型系统通常不被认为是面向对象的,而具有模板子类化的C ++模板也是如此。但是,也许可以说模板子类模仿OOP。

由于模板子类化不是一种广为人知的机制,因此让我举一个来自SeqAn库的示例。

String cstr = "This is a test";
String > dstr = "GATTACA";

cout << "length(" << cstr << ") = " << length(cstr) << endl;
cout << "length(" << dstr << ") = " << length(dstr) << endl;

在这里,String并且String >是“ 抽象类”的继承。它们使用完全不同的方法封装字符串的概念。它们共享多态方法,这两种具体类型的实现方式不同。String<> length

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有