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

📅  最后修改于: 2022-05-13 01:55:47.032000             🧑  作者: Mango

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

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

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

示例:Smalltalk

为什么Java不是纯面向对象语言?

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

  • 原始数据类型 ex。 int、long、bool、float、char 等作为对象: Smalltalk 是一种“纯”面向对象的编程语言,与Java和 C++ 不同,因为对象值和原始类型值之间没有区别。在 Smalltalk 中,诸如整数、布尔值和字符之类的原始值也是对象。
    在Java中,我们将类型预定义为非对象(原始类型)。
    int a = 5; 
    System.out.print(a);
    
  • static 关键字:当我们将一个类声明为 static 时,它可以在Java中不使用对象的情况下使用。如果我们使用的是静态函数或静态变量,那么我们不能通过使用 dot(.) 或类对象来调用该函数或变量,从而违背面向对象的特性。
  • Wrapper 类: Wrapper 类提供了将基元转换为对象和将对象转换为基元的机制。在Java中,您可以使用 Integer、Float 等代替 int、float 等。我们可以在不调用对象方法的情况下与对象通信。前任。使用算术运算运算符。
    String s1 = "ABC" + "A" ;
    

    即使使用 Wrapper 类也不能使Java成为纯粹的 OOP 语言,因为在内部它会使用 Unboxing 和 Autoboxing 等操作。因此,如果您创建而不是 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++ 是部分面向对象的语言?