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

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

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

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

示例:Smalltalk

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

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

  • 原始数据类型例如。int、long、bool、float、char 等作为对象:  Smalltalk 是一种“纯”面向对象的编程语言,与 Java 和 C++ 不同,因为对象值和原始类型值之间没有区别。在 Smalltalk 中,整数、布尔值和字符等原始值也是对象。
    在 Java 中,我们将类型预定义为非对象(原始类型)。


int a = 5; 
System.out.print(a);
  • 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”。
目录
相关文章
|
22天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
15 3
|
1月前
|
数据采集 分布式计算 大数据
Java语言在大数据处理中的应用
传统的大数据处理往往依赖于庞大的数据中心和高性能的服务器,然而随着大数据时代的到来,Java作为一种强大的编程语言正在被广泛应用于大数据处理领域。本文将探讨Java语言在大数据处理中的优势和应用,以及其在分布式计算、数据处理和系统集成等方面的重要作用。
|
2天前
|
安全 Java 大数据
探索Java的奇妙世界:语言特性与实际应用
探索Java的奇妙世界:语言特性与实际应用
|
3天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
3天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
8 0
|
3天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
8天前
|
安全 Java 机器人
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
19 0
|
9天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
9天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
151 10
|
11天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。