【问题标题】:C and OOP need a little bit of clarification [closed]C和OOP需要一点澄清[关闭]
【发布时间】:2015-12-14 09:39:51
【问题描述】:

我目前正在使用 C 语言进行大量编程。我是一名本科生。我们学习的第一门语言是 Java,现在我正在学习 C。

在 Java 中,我们创建一个类及其字段变量(状态)和一组用于所述对象实例的方法(或行为)。

在 C 中我们有一些非常相似的东西,我们有一个包含我们的对象的结构(我猜,我认为这是它的“状态”或字段变量或“属性”),并且我们有可以传递对象的函数来修改其行为。

在 C 语言中,我可以通过数据隐藏或通过头文件共享来实现相同的“封装”和“继承”形式。

虽然我完全理解 Java 和 C 以非常不同的方式实现这一目标,但我对为什么 C 不被真正视为 OOP 而是程序性感到困惑。

我觉得我错过了一些重要的事情。也许我不清楚什么是程序编程?或者我只是计划错误或使用 C 完全错误。很高兴知道。

编辑:

我不会在每张海报上打字,而是将其添加到此处。非常感谢大家,老实说,我以为我错过了一些重要的概念。你们都说得有道理,我觉得我有更好的理解。非常感谢大家这么快的回答并花时间回复这篇文章。

再次感谢我真的很感激!

【问题讨论】:

标签: java c oop procedural


【解决方案1】:

您可以使用过程语言(或几乎任何语言)进行面向对象编程,但这更难,因为您必须自己做更多的工作。

Java 被认为是一种 OOP 语言(大多数人),因为它直接支持 OOP 概念,如封装、继承和多态。

C 不被视为 OOP 语言,因为虽然您可以使用它进行封装、继承和多态,但该语言不提供帮助您这样做的构造。

【讨论】:

    【解决方案2】:

    是的,我们可以实现 Java 或任何其他在 C 中众所周知的语言的功能,但唯一需要注意的主要一点是易用性。 这些语言使得使用封装、继承等概念变得更加容易。 由于使用了不同的编程范式,这两种语言的最大差异出现了。 C分解为函数,而JAVA分解为对象。 C 更面向过程,而 JAVA 更面向数据。

    【讨论】:

      【解决方案3】:

      当然,您可以在任何语言中使用面向对象的编程技术(即使是纯机器代码)。不同之处在于,在 Java 中对象是强制,而在 C 中,它们只是可能的约定之一(您可以选择遵循或忽略)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-18
        • 2021-01-01
        • 2011-09-15
        • 2019-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多