最近因为想折腾下Android App,所以在学Java。
对C的语法和Python的面向对象知识比较熟悉的话,Java学起来不是很困难。
就是感觉Java里面的东西太过繁杂。
感觉其中的抽象类和接口就是一种语法糖,Java只不过是在编译的时候对抽象类和接口进行了限制,比如不能实例化,方法只有定义不能有实体等等。
这些东西在python中直接就全部简化为类了:
* 用类的继承实现“继承抽象类”;
* 用类的多重继承实现“implements 多个接口”,还有一些特别常用的接口比如Iterable直接化为类的魔法方法__iter__了,在需要遍历操作的时候自动调用(for in, in, map, reduce, filter等操作)。
从这点大概可看出Java和Python在设计风格上的不同:
* Java更注重确定性,通过各种语法糖+附带的编译器限制,把条条框框都定起来,再允许开发者在这些框框下去用;
* Python则更加注重灵活多变,到底怎么用/是什么由开发者在具体运用的时候来抉择,运行时知晓一切。
Java更加依赖各种语法/限定来保证软件质量,Python更加相信开发者的水平足以保证软件质量。
小弟的理解是对的吗?请大家指点。
对C的语法和Python的面向对象知识比较熟悉的话,Java学起来不是很困难。
就是感觉Java里面的东西太过繁杂。
感觉其中的抽象类和接口就是一种语法糖,Java只不过是在编译的时候对抽象类和接口进行了限制,比如不能实例化,方法只有定义不能有实体等等。
这些东西在python中直接就全部简化为类了:
* 用类的继承实现“继承抽象类”;
* 用类的多重继承实现“implements 多个接口”,还有一些特别常用的接口比如Iterable直接化为类的魔法方法__iter__了,在需要遍历操作的时候自动调用(for in, in, map, reduce, filter等操作)。
从这点大概可看出Java和Python在设计风格上的不同:
* Java更注重确定性,通过各种语法糖+附带的编译器限制,把条条框框都定起来,再允许开发者在这些框框下去用;
* Python则更加注重灵活多变,到底怎么用/是什么由开发者在具体运用的时候来抉择,运行时知晓一切。
Java更加依赖各种语法/限定来保证软件质量,Python更加相信开发者的水平足以保证软件质量。
小弟的理解是对的吗?请大家指点。
