Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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_Object - Fatal编程技术网

Java是一个;完全;面向对象语言?

Java是一个;完全;面向对象语言?,java,object,Java,Object,最近在一次求职面试中,我被问到“Java是一种”完全“面向对象的语言吗?” 由于我完全无法回答这个问题,也不知道答案,请有人帮助我理解这个问题的本质 正如我所看到的,这个问题以“基于意见”的方式结束,这不是我要问的意见。我是在问我是否不知道这个完全/不完全的类别 如果问这个问题的论坛不对,请告诉我。Java有原语。原语不是对象。Java不是100%面向对象的,因为它仍然包含原语数据类型 例如: int i=0; 此处i不是对象,而是包含实际值 但是, Set<String> set

最近在一次求职面试中,我被问到“Java是一种”完全“面向对象的语言吗?”

由于我完全无法回答这个问题,也不知道答案,请有人帮助我理解这个问题的本质

正如我所看到的,这个问题以“基于意见”的方式结束,这不是我要问的意见。我是在问我是否不知道这个完全/不完全的类别


如果问这个问题的论坛不对,请告诉我。

Java有原语。原语不是对象。

Java不是100%面向对象的,因为它仍然包含原语数据类型

例如:

int i=0;
此处
i
不是对象,而是包含实际值

但是,

Set<String> set=new HashSet<String>();
Set Set=newhashset();

set
是一个引用哈希集的引用

否。Java不是,因为它支持基本数据类型[^],如int、byte、long。。。等,以供使用,而不是对象

纯面向对象的编程语言需要满足七个条件。它们是:

  • 封装/数据隐藏
  • 继承权
  • 多态性
  • 抽象
  • 所有预定义类型都是对象
  • 所有操作都是通过向对象发送消息来执行的
  • 所有用户定义的类型都是对象

    • 取决于你如何看待它,但正如@biziclop所说,这是一个意见问题

      具体来说,Java是一种面向对象的语言,但仍然可以用它来进行函数式编程(一种接受原始参数并返回结果的静态方法)

      由于原语不是对象,所以可以使用Java进行非对象编程


      所以从技术上说,不,Java不是一种完全面向对象的语言。

      这是100%的个人观点,但我尽量避免为任何在面试中提出类似问题的公司工作。这是由人力资源部或实际开发经理提出的吗?我不确定面试官的真正意思,但就纯Java而言,我会说:是的,它完全面向对象,因为一切都是围绕类/对象的概念构建的。没有像C/C++等中那样的免费函数。如果你将其他JVM语言加入其中,情况就完全不同了。@Thomas更糟糕的是,lambda的行为类似于对象。顺便说一句,关于这个主题,这里有一个有趣的“progammers”问题:java支持的包装类非常int,long,etc是包装类的对象。那么,如何将java称为非纯对象呢oriented@Veke如果是的话,它只会有包装器类。因此,我们可以说,因为原始数据类型,Java不是纯面向对象的吗?它也有静态成员。不应该混合和混合上下文;问题是Java语言是否遵循OO语言的确切定义。不,它不是,因为这里提到的简单原因,以及在网上的几十个其他来源。标准API提供了一些包装类,这一事实并没有改变语言的任何事实。这7个特性来自哪里?问一个LISPer需要满足哪些特性,你会听到一个完全不同的故事。OOP主要是关于动态方法分派的。在您的列表中大致对应多态性。Java没有指针,
      set
      是一个引用。@rpattiso抱歉,伙计,我在这里使用了错误的术语,但实际上指针基本上是一个引用。我在回答中更改了指向引用的指针