面向对象编程基础
• 对象
对象object就是变量和相关的方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为。
对象是有状态(数据)和行为(功能)等内容的。例如:要说明一个学生,需要提供姓名、学号、出生日期、专业、兴趣爱好等,这些用于描述对象的数据元素称为对象属性。而学生的行为会包括注册、选课、考试等,这些表示对象可能产生的操作称为对象的行为(或操作、方法)。
• 类
类class中定义一类对象共有的变量和方法。把一个类实例化即生成该类的一个对象。
类(class)是同一类型对象的抽象,对象是类的实例化。如,黄色的钢笔、黑色的钢笔等可以抽象出钢笔类。类定义了每个属于该类的对象的数据结构(即类的属性或成员变量)以及由这些对象执行的操作或方法(即类的成员方法或操作)。如,人作为一个研究对象,其特征包括年龄,身高,体重等,这些可以看作对象的属性。而 人的行为动作作为对象的动态特性可以看成是对象的成员方法,如吃、睡。
• 消息
对象之间必须要进行交互来实现复杂的行为,用消息message的形式提供信息,消息包括:接收者,方法,参数。
面向对象的特性
• 封装
面向对象编程的核心思想之一就是将数据和对数据的操作封装在一起。通过抽象,从具体的实例中抽取共同的性质形成一般的概念(即类)。
• 继承
继承体现了一种先进的编程模式。子类可以继承父类的属性和功能,即继承了父类所具有的数据和数据上的操作,可以增加子类独有的数据和数据上的操作,也可以修改父类的数据和数据上的操作。
通过对象、类,可以实现封装encapsulation,通过子类则可以实现继承。
通过父类fatherclass和子类苏北class,实现类的层次,可以从最一般的类开始,逐步特殊化定义一系列的子类。
通过继承实现了代码发复用,使程序的复杂性线性地增长,而不是呈几何级数增长。
• 多态
多态是面向对象编程的又一重要特征。例如,班主任要求全班同学打扫卫生,而在执行打扫卫生任务时,有人扫地,有人洒水,有人擦玻璃。从软件的角度看,多态是指操作名称相同,但实现的功能不同。如计算面积可以同一使用area()方法,但是根据操作接受的参数不同,可以实现计算圆的面积,长方形的面积等等。Java中使用方法覆盖、方法重载、接口等技术实现这种多态性。
Java通过方法重写和方法重载来实现多态。
通过方法重写override,一个类中可以有多个具有相同名字的方法,由传递给它们的不同个数的参数来决定使用哪种方法,这就是多态。
通过方法重载,子类可以重新实现父类的某些方法,使其具有自己的特征。
• 抽象abstract与接口interface
抽象化概念的生成是为了要降低程序版本更新后,在维护方面的负担。
使功能的提供者和功能的用户能够分开,各自独立,彼此不受影响。
为了达到抽象化的目的,需要在功能提供者与功能使用者之间提供一个共同的规范,及接口。