注:本篇文章中的讲解部分针对于有C或C++基础的程序员而作。本篇文章中只讲述“面向对象的程序设计”部分,即Eclipse软件中关于类函数的知识,不涉及基础语法(如赋值语句、if语句、循环语句等)。
本篇文章为笔者的学习感悟,难免存在错误和纰漏,欢迎指正,请多多包涵。
虽然python几欲撼动Java的王座,Java仍常年位居编程语言排行榜榜首。这与Java使用的是更加接近人类思考习惯的“面向对象的程序设计”密切相关。
笔者学习过C++,由于C++中有类函数,所以入门Java比较容易。
对于C、C++、Java三个编程语言的关系,我认为可以简单的写为C + Java = C++。C语言主要是“面向过程的程序设计”语言。C++是对C的继承与发展,在C的基础上增加了类函数,也就是“面向对象的程序设计”。Java则舍弃了C++中复杂的“指针”等内容,只有“面向对象的程序设计”。虽然Java没有C++那么多功能,但它的学习难度较低,知识点较少,而且Java以类作为文件结构使得代码的结构更加简单、易于管理,因此Java得到了程序员们的青睐。
对于有C语言基础的程序员,Java的学习不需要“另起炉灶”,它们之间有很多相似甚至相同的内容:
- 程序的入口都是main函数,程序有且必有一个main函数。
- 数据的类型、变量的声明基本一致(Java多了byte类型和C++中有的String类型),条件语句、循环语句完全相同。
- C语言中的结构体类型struct含有“面向对象的程序设计”思想。
对于有C++基础的程序员,则需注意Java中一些与C++不同的地方:
- Java建立在类的基础上,main函数和各种函数、变量声明全部应在类的内部。C++中文件的概念相当于Java中类的概念。
- Java中main函数的声明:public static void main(String[] args),绿色部分一个字母都不能改,不然会报错(后面会解释原因)
学过毛概的我们知道思想建设的重要性,所以在敲代码之前,我们先讲讲“面向对象的程序设计”的思想。
对于学过C或C++的程序员,应该很清除什么是“面向过程的程序设计”。
“面向过程的程序设计的主要观点是采用自顶而下、逐步求精的程序设计方法...”
——百度百科
这样的解释比较的抽象,笔者将“面向过程”理解为对于变量的处理过程进行的编程。在“面向过程的程序设计”中,我们在main函数外定义函数,在main函数内定义变量,通过输入和函数对变量进行修改或处理,最后输出这些处理的结果。“面向过程的程序设计”正是这样通过变量和函数一步步、结构化的实现程序员脑子的数据处理过程。
那么什么是“面向对象的程序设计”?说到“对象”,就不得不提到前面讲到的类函数。它们两个有非常密切的关系,但是要注意它们是完全不同的两个概念。前面说到过“面向对象的程序设计”是一种接近人类思考习惯的设计方式,所以讲解这个概念必须要以实际出发。
首先问问读者们,我们是什么?是“人类”吧?注意到了吗?没注意到的跟我一起学断句“人 | 类”。我说我们都是“人类”,没人反驳吧;但有首歌唱的好,“我们不一样~”,我们是不同的“人”。前者“人类”的概念就是“类”的概念,后者“人”的概念就是“对象”的概念。“类”指的是具有同样的某些属性的事物的抽象,对于人类,属性有:外貌、财富、学历、地位等等。只要是人类,都可以用这些属性描述,但对于阿猫阿狗就不行了。而我们知道每个人的人生道路是不同的,一个人的人生会由外貌、财富、学历、地位,甚至运气决定。不同的人就是不同的“对象”,不同对象的属性的值不同,比如有的人的外貌属性写的是“美”,有些人是“丑”。“对象”是“类”的实例,人在出生的时候是一张白纸,这时候只能称作人类,后来有了名字,这时候你才是一个人,一个由“类”生成的独一无二的“对象”。再通过后天的成长,这个“对象”的人类属性才渐渐有了数据:外貌美丑?学历高低?等等。这个过程就是“对象”的初始化和修改的过程。
(上面讲到的人类的成长过程对应了对象创建的要点。首先要有对象的名字,这个名字相当于变量名,在程序中是独一无二的。创建了对象后要对对象的属性进行初始化,这由类函数中的构造函数实现,Java提供的默认的构造函数会将属性的值初始化为0或null)
<