Java入门学习
面向对象与面向过程的差异
一种程序设计语言的产生,不仅是程序设计技术的改进,也包含了表达和认知思想的进步。 以C语言为代表的部分早期语言,被称为面向过程的语言,不仅因为其程序设计的表达形式是以过程为基本元素,本质上更在于此时对计算机化的系统的理解的主导思想还是控制流或者数据流的,构成系统的要素是模块——处理逻辑。
面向对象语言的产生,是因为对于系统的理解或抽象到了更为高级的层次。此时的认知思想不仅更接近于现实世界,其抽象程度也很高。因而,既有易懂的一方面,也有难懂的另一方面,就看理解的境界了。
面向对象思想介绍
面向对象思想,对现实世界采用直观的理解,计算机化时候采用深度的抽象,简单地可以总
结如下:
系统是由事物构成的,事物之间是有联系的,复杂的事物也是系统;系统与系统、系统与事物、事物与事物之间是有明确界限(边界)的;系统或事物的状态刻画可以用属性表示,属性一般是些简单的数据,如果复杂那就是事物了;系统或事物的状态会发生变化,称为行为,产生变化是有原因的(内部的或外部的),变化的过程可能是复杂的;不同的事物之间会具有共同的属性和行为,共同的极端情形就是完全包含。
基于以上的认识,一个运行时(动态)的具体系统或事物,是由几个更小的具体事物构成(极端的事物就是一个简单的属性数据),它们是不断发生变化的。如果对事物这一概念进行了有效的抽象,那么问题就迎刃而解。首先,将任何一个具体的事物称为对象(Object),它的极端情形就是过去的变量;事物是分类的,每一类事物都具有统一的属性和行为,即类型——抽象数据类型,简称为类(Class);行为既然是过程,那么就抽象成函数,命名为方法,以示区别。
例如:
描述身高或姓名,各自只是一个简单的数据变量;
描述一个学生,可以使用学号、姓名、宿舍、班级等;那更换宿舍算什么呢!
那描述宿舍、班级,又要有许多个项目。
面向对象程序设计中的主要概念和特征
面向对象程序设计(Object Oriented Programming),OOP语言中,为了进行更为高度的抽
象,会引入一些现实世界中难于找到的概念,但对于一个程序语言来说确实很有价值的。以
下暂时介绍的概念基本上都来源于对现实世界的抽象,要从程序设计的角色中去理解它们。
面向对象程序设计使系统更易于理解,也使代码具有更好的重用性、可扩展性、易于管理和
维护。
主要概念
1、类
类是对一类事物的抽象表示,其角色就相当于数据类型,当然可以算作复杂的数据类型。如
学生、宿舍、班级。
2、对象
对象表示一个具体的事物,其角色就是变量,即一个复杂数据类型——xx类的变量。如周瑜、张飞、瑜飞居,飞虎班。
主要特征
OOP语言有三个特征:封装、继承及多态性。
1、封装
类的构成包括成员变量/对象与成员方法,这样将相关的数据与函数包装在一起,同其他的类相区分,就是封装。显然,避免了面向过程语言的平行缺陷,说明了类和成员之间的所属关系。进一步地,可以限制类的成员在外部的可见性,那么就将封装体现得更完美。
2、继承
当一种事物甲完全是另一种事物乙的特例,那么,一般地,类甲只是比类乙多出一些成员变量/对象与成员方法,称为类甲继承类乙,类甲称为(类乙的)子类,类乙称为(类甲的父
类。父类也称为基类、超类,子类也称为导出类、派生类。显然编写子类就没有必要重复书写父类中乙有的代码部分,这是
OOP中最典型的代码重用。
3、多态
多态表示一个类的某种行为存在多种实现版本。简单的情况是在一个类中,给出多种不同的
实现,复杂的情况是在多个子类中各自给出不同的实现。