什么是纯面向对象语言?

纯面向对象语言或完全面向对象语言是指完全面向对象的语言,它支持或具有将程序内的所有内容视为对象的功能。它不支持原始数据类型(如 int,char,float,bool 等)。编程语言满足七种标准可以就可以称为纯粹的面向对象语言,他们是:

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

为什么 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 一样工作:

  1. 在创建 Integer 类时,您使用的是基本类型 “int”,即数字 10,20。
  2. 在使用加法时,Java 使用原始类型 “int”( jdk1.5 需要拆箱操作,jdk1.5 及以后添加了新特性:自动装箱和拆箱)。

“不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!

正是金九银十跳槽季,为大家收集了 2019 年最新的面试资料,有文档、有攻略、有视频。

有需要的同学可以来在公众号【Java 知己】,发送【面试】领取最新面试资料攻略!

最新文章

  1. 什么是web框架?
  2. light oj 1422 Halloween Costumes (区间dp)
  3. C# UDP 连接通信 简单示例
  4. 安装samba服务器
  5. Arduino中的数据类型范围
  6. AngularJs遇到的小坑与技巧
  7. ueditor编辑器图片自定义存放目录及路径修改
  8. 拿别人APP的IPA包及你看上的图片
  9. C语言最后一次作业--总结报告
  10. springboot集成mybatis(二)
  11. maven配置及IDEA配置maven环境
  12. 2015-11-03 ado.net3
  13. Salesforce 数据备份和恢复小知识
  14. 分布式系统消息中间件——RabbitMQ的使用思考篇
  15. 在Linux服务器上配置Transmission来离线下载BT种子
  16. BZOJ 2200--[Usaco2011 Jan]道路和航线(最短路&拓扑排序)
  17. MySql错误处理(二) - Condition & Handle
  18. Linux 限制用户远程SSH登录
  19. Google浏览器Chrome安装失败,错误代码0xa0430721解决办法
  20. [Python]网络爬虫(八):糗事百科的网络爬虫(v0.2)源码及解析

热门文章

  1. Tornado—添加请求头允许跨域请求访问
  2. source insight搭建python环境
  3. 给定数轴上的n个点,求距离最近的两个点的距离
  4. E-factory
  5. ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)
  6. 《跟我学shiro》
  7. JavaScript动态加载script方式引用百度地图API,Uncaught ReferenceError: BMap is not defined
  8. Python 條件式 Condition
  9. Matlab实现直方图均衡化
  10. C# 中使用 Redis 简单存储