Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 面向对象语言和非面向对象语言之间有什么区别?_Java_C_Oop - Fatal编程技术网

Java 面向对象语言和非面向对象语言之间有什么区别?

Java 面向对象语言和非面向对象语言之间有什么区别?,java,c,oop,Java,C,Oop,我一直听说C是一种非面向对象语言,java是一种面向对象语言。我想知道两者的区别是什么?面向对象语言通过提供易于实现数据抽象和多态性的结构,使编写面向对象程序变得更容易。Java是一种主要用于面向对象编程的语言,C是一种主要用于面向过程编程的语言 这是一个很好的解释 与面向对象的比较 程序设计的重点 编程就是分解一个 将任务编程到 变量、数据结构和 子程序,而在 面向对象编程 将编程任务分解为 对象和每个“对象” 封装自己的数据和方法 (子程序)。最重要的 区别是程序性的 编程使用程序进行操作

我一直听说C是一种非面向对象语言,java是一种面向对象语言。我想知道两者的区别是什么?

面向对象语言通过提供易于实现数据抽象和多态性的结构,使编写面向对象程序变得更容易。

Java是一种主要用于面向对象编程的语言,C是一种主要用于面向过程编程的语言

这是一个很好的解释

与面向对象的比较 程序设计的重点 编程就是分解一个 将任务编程到 变量、数据结构和 子程序,而在 面向对象编程 将编程任务分解为 对象和每个“对象” 封装自己的数据和方法 (子程序)。最重要的 区别是程序性的 编程使用程序进行操作 关于数据结构,面向对象 编程将两者捆绑在一起 所以“对象”是“自己”运行的 数据结构。命名法各不相同 在两者之间,尽管他们 语义大致相同: 面向对象程序设计 方法函数对象模块 消息参数属性变量


但是为了让事情变得更基本,你可以想象像你想象的现实世界中的物体,比如汽车,将拥有汽车的所有属性,就像窗户和轮胎一样

OOP使得把一个大问题分解成更小的独立部分变得更容易。然后,您可以通过组合这些部分来创建更复杂的内容

面向对象编程范例告诉您将状态变量封装在称为“对象”的实体中,这些实体通过消息传递进行通信,通常作为带有“特殊”的
自身
参数的函数来实现


面向对象编程语言是一种旨在简化oo范式使用的语言。它的语义和语法正朝着这个目标发展。继承(基于类或原型)和子类型多态性是使oo的抽象概念在实践中可行的重要技术。

过程编程和OOP,两者都是不同的编程,是众所周知的苹果和橙子。PP依赖于“子程序”。OOP向“对象”发送“消息”,对象改变对象的“状态”,并向其他对象发送消息;此外,可以扩展行为对象,创建新类型的对象。两者都依赖于任务和副作用。问题可能在一种范式中有自然的解决方案,但在另一种范式中则有巴洛克式的解决方案。也就是说,通过使用传递消息的对象或通过过程,可以很容易地对问题进行建模

编程语言可以支持超出其本机支持的范式,但它需要程序员实现必要的结构。例如,您可以使用C进行OOP;事实上,C的一些OO扩展依赖于产生C代码作为输出的预处理器


当你在学习上取得进步的时候,你会特别注意其他方面。看一下(如Prolog所示)和(如示例所示)。

面向对象语言是围绕数据结构(称为对象)的思想构建的,每个数据结构都包含自己的数据和行为。通过组合这些对象并让它们彼此交互,您可以设计一个程序,更好地反映您试图解决的问题的领域

例如,在银行应用程序中,您可能有表示帐户的对象,每个对象存储余额等数据,并实现转账等特定行为


用一种更传统的语言,您可以将数据和行为保存在不同的位置。

我将为您提供最简单直观的答案

(考虑到Java是一种面向对象的语言,C是一种过程语言)

面向对象语言
  • 核心概念是对象(以汽车为例)
  • 对象具有定义它们的属性,它们可以是恒定的,也可以是变化的(一辆车是红色的,2004年款,具有巡航控制。它目前还有100K的里程表和3/4油箱的燃油)
  • 对象可以发送影响它的消息(汽车可以从a行驶到B,汽车可以加油)
程序语言
  • 核心概念是流程(考虑在线订购)
  • 为了完成一个流程,它必须经过几个步骤(订单必须(1)发送到仓库,(2)装箱,(3)装运)
  • 其中一个步骤可能是进程本身,也可能是原子的

哇,这家伙身上到处都是大话。作为一个从过程编程开始,现在主要从事面向对象编程的人,我在概念上是这样看待差异的(没有大的术语):

在C语言中,有一些称为结构的东西可以保存状态。它们看起来有点像对象,例如,您可以有一个名为Car的结构,创建Cars的实例,并设置其make、model和color字段。但是,您不能让Car结构实例执行任何操作。相反,如果要洗车,必须将汽车实例传递给以下外部函数:

WashMyCar(myCar);
OOP语言使用与结构不同的概念,称为类,对象是这些类的实例。暂时忘掉那些大字继承和多态性(一旦你有了类,这些都是更高级的主题)。想想汽车的例子。例如,在Java中,您可以定义一个名为Car的类:

public class Car {
  String make;
  String model;
  String color;
}
然后,创建一个汽车的实例,如下所示:

Car myCar = new Car();
myCar.make = "Honda";
myCar.model = "Accord";
myCar.color = "Black";
这与结构非常相似。现在,OOP的不同之处在于,您可以将类定义扩展为de
public class Car {
  String make;
  String model;
  String color;
  String condition;
  void washMe() {
    this.condition = "clean";
  }
  void goOffroad() {
    this.condition = "dirty";
  }
}
Car myCar = new Car();
myCar.make = "Honda";
myCar.model = "Accord";
myCar.color = "Black";

myCar.goOffroad();
System.out.println(myCar.condition); // dirty
myCar.washMe();
System.out.println(myCar.condition); // clean