gpt4 book ai didi

java - 面向对象语言和非面向对象语言有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:44 24 4
gpt4 key购买 nike

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

最佳答案

哇,很多重要的 OOP 术语都被抛给了这个人。作为一个从过程编程开始并且现在主要从事 OOP 的人,这就是我在概念上对差异的看法(没有所有大术语):

在 C 语言中,您拥有可以保存状态的称为结构的东西。它们有点像对象,例如,您可以拥有一个名为 Car 的结构并创建 Cars 的实例并设置其品牌、型号和颜色字段。但是,您不能告诉 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 的不同之处在于您可以扩展类定义以定义类方法——它们类似于过程中的函数,只是它们总是对对象进行操作。所以,让我们添加清洗方法:

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

希望这个例子对您有所帮助。当然,OOP(和过程)远不止这个简单的例子。但核心区别在于拥有“拥有”自己方法的对象类。

关于java - 面向对象语言和非面向对象语言有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1894788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com