为什么 Java 不是纯面向对象语言?
什么是纯面向对象语言?
纯面向对象语言或完全面向对象语言是指完全面向对象的语言,它支持或具有将程序内的所有内容视为对象的功能。它不支持原始数据类型(如 int,char,float,bool 等)。编程语言满足七种标准可以就可以称为纯粹的面向对象语言,他们是:
- 封装 / 数据隐藏
- 继承
- 多态性
- 抽象化
- 所有预定义类型都是对象
- 所有用户定义的类型都是对象
- 对对象执行的所有操作必须仅通过对象公开的方法
为什么 java 不是纯面向对象语言?
java 支持属性 1,2,3,4 和 6 但不支持上面给出的属性 5 和 7. java 语言不是纯面向对象语言,因为它包含以下属性:
原始数据类型例如对象:
smalltalk 是一种 “纯粹的” 面向对象的编程语言,与 java 和 c++ 不同,因为作为对象的值和作为基本类型的值之间没有区别。在 smalltalk 中,原始值,例如整数,布尔值和字符也是对象。在 java 中,我们将预定义类型作为非对象(基本类型)。
int a = 5; system.out.print(a);
static 关键字:
当我们将一个类声明为 static 时,可以在不使用 java 中的对象的情况下使用它。
包装类:
包装类提供了将基元转换为对象和对象转换为基元的机制。在 java 中,您可以使用 integer,float 等代替 int,float 等。我们可以在不调用其方法的情况下与对象使用算术运算符。
即使使用 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”( jdk1.5 需要拆箱操作,jdk1.5 及以后添加了新特性:自动装箱和拆箱)。
“不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!
正是金九银十跳槽季,为大家收集了 2019 年最新的面试资料,有文档、有攻略、有视频。
有需要的同学可以来在公众号【java 知己】,发送【面试】领取最新面试资料攻略!
推荐阅读
-
【JAVA语言学习】Java面向对象Ⅲ
-
为什么 Java 不是纯面向对象语言?
-
Java语言程序设计—面向对象程序设计
-
java是一个纯粹的面向对象的语言?面向对象语言和面向对象编程
-
数据结构和算法 - 为什么复杂的算法都用java或者c来实现而不是使用php这样子都脚本语言?
-
探讨javascript是不是面向对象的语言_javascript技巧
-
【JAVA语言学习】Java面向对象Ⅲ
-
Java语言入门||02_面向对象与常用类||day10_接口,多态
-
数据结构和算法 - 为什么复杂的算法都用java或者c来实现而不是使用php这样子都脚本语言?
-
Java -- 面向对象编程语言(oop)的几个简单概念