前面几篇文章介绍了简单代码的基本过程。总体来说,需要什么功能就定义什么方法,然后在
main
方法中调用即可。可以看到,这类编程思想是根据程序的执行过程、或者说功能的执行过程来编写的,即面向过程。这种编程思想比较直观,但是耦合度和松散度不是很好,不太符合认知规律。以自然界为例,首先是一个个生物体,生物体有着不同的功能(能力),若干个生物体组成了一个小型生态系统。如土壤、柳树、蚂蚁、知了。土壤有养分、水分等成分;柳树有树根、树叶等成分,可以产生氧气;蚂蚁、知了利用氧气进行活动,吃树叶、吸树汁等等。
因此,将上述的认知应用到项目中,可以先创建一个个生物体,然后“补充”生物体的成分和功能,最后将各个生物体进行关联,组成一个完整的项目。这就是面向对象的编程思想。
那么一种生物体不可能只有一个,所以创建生物体需要有模板,这个模板就是类,根据生物体的成分来区分同一种生物体的不同个体。创建的生物体称为对象,生物体的成分称为属性,生物体的功能称为方法。
从另一个角度来说,方法是将一段功能的代码抽象,而类则是数据和方法的代码抽象,类的抽象层次比方法更高一些。另外,类也是一种数据类型,即引用数据类型,相当于int、float等等,创建对象(引用,后续会提到)就相当于定义变量。
面向对象有三大特征:封装、继承、多态。
- 封装指的是对类的属性和方法的进行修饰,对外提供一些简单入口。
- 继承指的是对类的代码复用。
- 多态指的是父类和子类之间的状态对应关系。