一、论述
在我们刚接触Java语言的时候,所有的教材或老师都会和你讲这样一点:Java是一门面向对象的编程语言。用2015年比较流行的网络语就是:Java是一门面向对象的编程语言、Java是一门面向对象的编程语言、Java是一门面向对象的编程语言,重要的事说三遍!!!
那Java到底是怎样的一门面向对象的编程语言呢,鄙人给出的结论是Java不是纯面向对象的。也许,已经有前辈提出了和我一样的结论,这没关系。下面通过一个具体的实例进行证明一下我的结论。
二、实例证明
1、定义一个通用的接口:CompareMethod
/** * Created by user on 2016/1/20. */ public interface CompareMethod { public boolean isEqual(int x, int y); public boolean isEqual(Integer x, Integer y); }
2、以Java语言和Scala语言分别实现这个接口
/** * Created by user on 2016/1/20. */ public class CompareMethodWithJava implements CompareMethod{ @Override public boolean isEqual(int x, int y) { return x == y; } @Override public boolean isEqual(Integer x, Integer y) { return x == y; } }
/** * Created by user on 2016/1/20. */ class CompareMethodWithScala extends CompareMethod{ override def isEqual(x: Int, y: Int): Boolean = { x == y } override def isEqual(x: Integer, y: Integer): Boolean = { x == y } }
3、分别给出对应的测试用例
/** * Created by user on 2016/1/20. */ public class OptWithJava { public static void main(String args[]){ CompareMethodWithJava cmwj = new CompareMethodWithJava(); System.out.println("1>>>>: " + cmwj.isEqual(10,10)); Integer x = new Integer(10), y = new Integer(10); System.out.println("2>>>>: " + cmwj.isEqual(x,y)); } }
/** * Created by user on 2016/1/20. */ object OptWithScala extends App{ def result1() : Boolean = { def x: Int = 10 def y: Int = 10 new CompareMethodWithScala().isEqual(x,y) } println("1<<<<: " + result1()) def result2() : Boolean = { def x: Integer = new Integer(10) def y: Integer = new Integer(10) new CompareMethodWithScala().isEqual(x,y) } println("2<<<<: " + result2()) }
三、测试结果比较
1、运行Java类型的测试用例,结果如附件中的图一
2、运行 Scala类型的测试用例,结果如附件中的图二
3、由此可以证明:Java不是纯面向对象语言。
相关推荐
2 一些评价说javascript不是真正面向对象的因为它不能提供信息的隐藏。也就是,对象不能有私有变量和私有方法:所有的成员都是公共的。但随后有人证明了javaScript对象可以拥有私有变量和私有方法。另外还有批评说...
Java新手入门的30个基本概念 ...很容易掌握,而且Java是完全的彻底的面向对象的,其中提出了很好的 GC(Garbage Collector)垃圾处理机制,防止内存溢出。 Java的白皮书为我们提出了Java语言的11个关键特性。
- 学会如何用面向对象的编程简化数据结构和算法 本书以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题:了解这些知识以期使计算机的应用获得最好的表现。不管使用何种语言或平台,掌握了数据结构...
Fuxi语言集成化开发环境1.63 (软件) Fuxi(伏羲)程序设计语言是一种面向对象的、并发的、函数型与逻辑型语言相...我们设计Fuxi语言不是为了去证明一个观点,而是去解决一些问题。Fuxi语言来源于实践,服务于应用。
称许可以在windows,solaris,linux其他操作系统上使用完全相同的代码.Java的语法与C++语法类似,C++/C程序员很容易掌握,而且Java是完全的彻底的面向对象的,其中提出了很好的GC(Garbage Collector)垃圾处理机制,防止...
java一个对象笔试题 内容 教程和文章 (一定有) \ (很棒的文章) 惊人的 图书 资源 (***) 组合器 (*) 演示文稿 (一定有) 视频 优酷频道 图书馆 / 语言 - 一种编程语言,旨在作为编程教育的绝佳选择,同时探索...
面向对象程序语言 面向对象设计(OOD)和软件工程 附录C 问题答案 第1章,综述 第2章,数组 第3章,简单排序 第4章,栈与队列 第5章,链表 第6章,递归 第7章,高级排序 第8章,二叉树 第9章,红-黑树 ...
考虑如何利用它们改进编程的效率 学会如何用面向对象的编程简化数据结构和算法 本书以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题;了解这些知识以期使计算机的应用获得最好的表现。不管使用何种...
我们设计Fuxi语言不是为了去证明一个观点,而是去解决一些问题。Fuxi语言来源于实践,服务于应用。 Fuxi 1.70 改进部分 1) 建立例外处理机制,程序中可使用raise来触发例外,例如, OnCardClick( Card card ==...
学会如何用面向对象的编程简化数据结构和算法 本书以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题;了解这些知识以期使计算机的应用获得最好的表现。 不管使用何种语言或平台,掌握了数据结构和...
面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多...
1. 课程管理:平台包含多门由浅入深的Java课程,涵盖基础知识、面向对象编程、数据结构、多线程等主题。 2. 视频教学:每门课程都配有高清视频讲解,由经验丰富的讲师授课,便于用户理解和吸收知识点。 3. 编程...
本文以范畴论中的集合范畴为背景,通过范畴论中的集合范畴解释和阐述了计算机科学中JAVA面向对象语言理论中的集合框架里的抽象概念,从而证明了范畴论在不同学科之间的关联起着重要作用。 关键字:范畴;集合范畴;...
学会如何用面向对象的编程简化数据结构和算法 本书以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题;了解这些知识以期使计算机的应用获得最好的表现。 不管使用何种语言或平台,掌握了数据结构和...
学会如何用面向对象的编程简化数据结构和算法 本书以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题;了解这些知识以期使计算机的应用获得最好的表现。 不管使用何种语言或平台,掌握了数据结构和...
RESOLVE(带有验证的可重用SOftware语言)是一种规范和编程语言,旨在验证面向对象程序的正确性。 RESOLVE语言是从头开始设计的,旨在促进数学推理。 这样,该语言为断言(例如事前条件)提供了语法槽,这些断言...
学会如何用面向对象的编程简化数据结构和算法 本书以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题;了解这些知识以期使计算机的应用获得最好的表现。 不管使用何种语言或平台,掌握了数据结构和...