「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战」
作者主页:海拥
作者简介:HDZ核心组成员
粉丝福利:往期获奖记录 每周送6~9本书,不定期送各种小礼品
Pure Object Oriented Language 或 Complete Object Oriented Language 是完全面向对象的语言,它支持或具有将程序内部的一切视为对象的特性。它不支持原始数据类型(如 int、char、float、bool 等)。纯面向对象的编程语言需要满足七个品质。他们是:
- 封装/数据隐藏
- 遗产
- 多态性
- 抽象
- 所有预定义类型都是对象
- 所有用户定义的类型都是对象
- 对对象执行的所有操作都必须仅通过在对象上公开的方法进行。
示例: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 工作有两个问题:
- 在创建 Integer 类时,你使用的是原始类型“int”,即数字 10、20。
- 在做加法时,Java 使用原始类型“int”。
作者立志打造一个拥有100个小游戏的摸鱼网站,更新进度:41/100
我已经写了很长一段时间的技术博客,并且主要通过掘金发表,这是我的一篇关于为什么 Java 不是纯粹的面向对象语言的文章。我喜欢通过文章分享技术与快乐。你可以访问我的博客 以了解更多信息。希望你们会喜欢!????
欢迎大家在评论区提出意见和建议!

















