当前位置: 首页 > news >正文

java完全面向对象吗_浅谈对Java为何是完全面向对象语言

原标题:浅谈对Java为何是完全面向对象语言

Java语言是面向对象的语言,也可以表示为java是面向类和接口编程的语言,就我而言,我个人认为java里面static方法和引用不是面向对象的,java里面的引用容易理解就相当于c语言的指针,java里面的对象就是指针,只是换了个名字而已,只是操作起来效率没有c语言中指针高.

而对于static方法,我们在使用static方法时,由于不存在this,所以java不是通过向对象发送消息的方式来完成,这样理解的话,我认为java里面的static方法,并不是完全面向对象的.

Java是非常“面向对象”的语言(尤其和现在同样非常火的C++相比,Java是单根继承结构),static方法,却不是“面向对象”的。因为它们具有全局函数的语义,使用static方法时,由于不存在this,所以不是通过“向对象发送消息”的方式来完成的。所以我认为,因为存在static方法,Java并不是完全的“面向对象”语言。如果一段代码中出现了太多的static方法,那就该重新考虑自己的设计.

ba3e7e2eeca69ca98aac4d592c8a0f68.png

Java是单继承,但它有接口(interface),解决C++里面多重继承带来的问题.main方法必须是static,因为只有使用main方法是入口,也就是说,jvm要执行,就必须从 main方法开始,static可以不用创建实例就可以调用该方法。那么,JVM就可以在没有初始化这个类的任何实例前就调用main.所以这个不是OO设计的问题,因为一个程序肯定要有入口.static一般是向其他类提供工具,所以经常把许多static函数封装到一个类里面,比如说常用的System.out.println....等都是封装好的静态方法,用来提供一些常用功能,避免自己的重复实现.

综上所述,对java里会出现一些非面向对象的东西和一些非他所宣传的东西,例如指针,实际上是存在的,只是换了个名字而已,叫引用,并且操作不像C那么自由了,而且效率也没有C高,之前从博客上面看到然有部分人对这个的理解,然后自己拓展开来谈一下自己的理解.返回搜狐,查看更多

责任编辑:

相关文章:

  • java getbean不同实现_Spring Boot 2 实战:根据条件来自动配置不同逻辑的Bean
  • 孝感 java_孝感java工资一般多少,孝感java工资待遇,孝感java工资待遇到多少
  • java struct2拦截器_Java struts2 拦截器 interceptors
  • JAVA安卓4.4.4_Android源码4.4.4_r1下载和编译
  • java 设置listview单元格颜色_动态改变Listview的item背景颜色和item中字体的颜色
  • 最长递增子序列 java_动态规划深入6 最长递增子序列
  • yml mysql参数_yml配置--给参数设置默认值
  • ant java eclipse_(转)Eclipse中使用Ant
  • java json merge_JavaScript 如何合并两个Json对象
  • java setselectionend_Java Gallery.setSelection方法代码示例
  • stringbuffer java API_StringBuffer类
  • jasperreport java数据_ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf...
  • 与时间相关的java源码_JAVA的Date类与Calendar类
  • Java修改文件扩展属性_扩展PropertyPlaceholderConfigurer对prop文件中的属性加密(修正1)...
  • java定义显性构造函数_Java基础之三、类的特性和接口
  • [译]CSS 居中(Center)方法大合集
  • 【mysql】环境安装、服务启动、密码设置
  • crontab执行失败的多种原因
  • ES2017异步函数现已正式可用
  • JavaScript DOM 10 - 滚动
  • Java超时控制的实现
  • jQuery(一)
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Mysql优化
  • Protobuf3语言指南
  • XForms - 更强大的Form
  • 关于List、List?、ListObject的区别
  • 入口文件开始,分析Vue源码实现
  • 推荐一个React的管理后台框架
  • 一道闭包题引发的思考
  • 交换综合实验一
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​虚拟化系列介绍(十)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (九)One-Wire总线-DS18B20
  • (四)模仿学习-完成后台管理页面查询
  • (正则)提取页面里的img标签
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net反编译工具
  • .NET开发者必备的11款免费工具
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .stream().map与.stream().flatMap的使用
  • /bin/rm: 参数列表过长"的解决办法
  • [20140403]查询是否产生日志
  • [Android 13]Input系列--获取触摸窗口
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [C++]拼图游戏
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大