Java 编程思想 研读1

来源:互联网 发布:桃谷绘里香 知乎 编辑:程序博客网 时间:2024/04/29 17:09

抽象


所谓的高级,就是不断抽象的结果。

汇编对机器码进行抽象,C 语言对汇编抽象,Java 站在了 C++  的肩膀上。

凡事都有两面,抽象后效率会降低,但弊端远不及抽象来的好处。

(事物的发展总是一步步循序渐进的,因为人的脑力有限,无法一次性发展到极端。)



语言


我学过的语言只有 C++ 和 Java,就根据这个两个语言的认识来谈谈语言。


首先,是基本类型。

计算机的初衷是计算,通过 "0110" 的方式 的把不同基本类型的数据映射到硬盘上,实现了保存数据的功能。

然后有了计算的功能,这应该和寄存器有关,我不是学底层的。


再则,是函数。

当重复的代码块出现了很多次以后,当人们厌倦了复制粘贴的复用方式后,

某个先驱者发明了函数,把重复的代码块抽象为一个函数。

慢慢的,有了带参数的函数,函数重载等等。


循环语句

当人们厌倦了,func(); func(); func(); func(); func();  的写法。


结构体

当人们因为变量太多,难以掌控而头痛时。

就将一些类型绑定在一起,更方便来描述某种东西。

(至始至终,目标没有变,让人脑更省力。)


当人们写了成千上万的函数,发现实在是难以管理。

有些函数明明是专给某个结构体使用的,为什么不绑定起来呢。


语言慢慢发展,类的静态属性,静态方法等都按着某种顺序出现了。

(看到某个东西,觉得很不不可思议时,应该是省略了过程直接看到结果吧,就像魔术。)



封装


当类有 private,封装出现了,封装意味着边界,意味着黑盒。

这就和使用第三方类库时一个概念,会用而不懂实现。

与其对应的是开源,不隐藏内部实现,可以任意修改。



继承


继承意味着一种规则,子类必须按基类制定的一些规则来实现自身。

这也是一种抽象。抽象分离出共性,而子类保留各自的个性。


细度


在编程,还有个概念很重要,细度,即不要出现任何重复的部分。

函数越短越好,只干某一件事,分割到不能再被分割为更小的函数为止。

继承一方面也是为了彻底的分离。



多态


广义上的多态有很多,比如一段 "0101" 根据类型的不同可以被解释为 int 或者是 double。

但更一般的来说,多态是指父类引用不同子类(或自身)实例,调用同一函数造成的不同行为。



引用

Java 中叫引用,实质是指针。

"0101" 只是硬盘上一堆无意义的数据,如何变成千奇百怪的对象实例呢?

答案就是引用,通过引用的类型,编译器知道了如何来解释这段 "0101"。

通过引用,知道了类的模型,知道了类的函数存在何处。

上面的多态,就是同一 "0101" 被不同类型指针引用的结果。



泛型


当一个求和的方法,面对 int double 类型的参数时,函数重载出现了,这也是一种抽象。

当一个类需要面对不同类型时,泛型就出现了。



GC


垃圾回收机制,在 Java 的书里自然是说 GC 多好多好。

但C++ 给我的感觉更安心,自己写了构造函数,为什么不写析构函数,而搞得虎头蛇尾的。



异常


我没感觉异常有什么好的,什么健壮性,用 catch 把本该抛出的错误隐藏掉叫健壮吗?

因为异常机制,我不得写无意义的 try catch 才是费时费力的。



跨平台


Java 最大的特点还是跨平台,重要的是连带效应。

一个款应用开发后,可以在不同平台下运行,用户使用起来没有任何困难。

既然一直在提抽象,实现了如此巨大抽象的 Java 不是很棒吗?

Java 是一种平台。

0 0