一、论述
在我们刚接触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不是纯面向对象语言。