为什么Java不是一种纯粹的面向对象语言?

纯面向对象语言或完全面向对象语言是完全面向对象的语言,它支持或具有将程序内部的一切都视为对象的特性。它不支持原始数据类型(如int、char、float、bool等)。纯面向对象编程语言需要满足七个条件。他们是:

null
  1. 数据隐藏/封装
  2. 遗产
  3. 多态性
  4. 抽象
  5. 所有预定义类型都是对象
  6. 所有用户定义的类型都是对象
  7. 对对象执行的所有操作只能通过对象上公开的方法执行。

例子:Smalltalk

为什么Java不是一种纯粹的面向对象语言?

Java支持属性1、2、3、4和6,但不支持上面给出的属性5和7。Java语言不是纯粹的面向对象语言,因为它包含以下属性:

  • 基本数据类型,例如int、long、bool、float、char等作为对象: Simultalk是一种纯的面向对象的编程语言,不像java和C++那样,因为值是原始类型的对象和值之间没有差别。在Smalltalk中,整数、布尔值和字符等基本值也是对象。 在Java中,我们将预定义类型作为非对象(基本类型)。
    int a = 5; 
    System.out.print(a);
    
  • 静态关键字: 当我们将一个类声明为静态类时,就可以在不使用Java中的对象的情况下使用它。如果我们使用的是静态函数或静态变量,那么我们不能使用点(.)调用该函数或变量或者类对象,无视面向对象的特性。
  • 包装类: 包装类提供了将原语转换为对象和将对象转换为原语的机制。在Java中,可以使用Integer、Float等,而不是int、Float等。我们可以与对象通信,而无需调用它们的方法。例如,使用算术运算符。
    String s1 = "ABC" + "A" ;
    

    即使使用包装器类也不能使Java成为一种纯粹的OOP语言,因为它在内部会使用诸如取消装箱和自动装箱之类的操作。因此,如果您创建而不是int Integer,并对其进行任何数学运算,那么Java将只使用原语类型int。

    public class BoxingExample
    {
    public static void main(String[] args)
    {
    Integer i = new Integer( 10 );
    Integer j = new Integer( 20 );
    Integer k = new Integer(i.intValue() + j.intValue());
    System.out.println( "Output: " + k);
    }
    }

    
    

    在上面的代码中,有两个问题是Java无法像纯OOP那样工作:

    1. 在创建Integer类时,您使用的是原语类型“int”,即数字10、20。
    2. 在进行加法时,Java使用的是原语类型“int”。

相关文章: 为什么C++是面向对象的部分语言?

本文由 桑吉特·阿南德 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享