面向对象的三大特征

什么是面向对象:

现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象

三大特征:

一、封装

目的:隐藏类或方法的实现细节

让使用者只能通过事先定制好的方法来访问数据。

便于修改,增强代码的可维护性。

简单来说就是:将对象的属性和行为封装起来,不需要让外界知道具体实现细节。

高内聚,低耦合

 

二、继承

继承是多态的前提,没有继承,就没有多态。继承主要解决的问题就是共性抽取。

概念:子类(也称派生类,导出类)继承父类(也称超类,基类),父类就是类中通用的共性。

父类和子类的关系是(is ----a),子类只有一个父类。

意义:复用代码---子类拥有父类的所有可见成员。

不同的类具有某些共同的属性和行为。

实现多态。

继承的实现

使用extends关键字,形式如下:

class 子类名 extends 父类名{

//类体

}

所有的类都直接或间接承接于java.lang.Object

protected关键字

protected可以在同类,同一包中的类,子类被调用,不能被其他包中的类调用。

当类希望被继承时,某已成员可以被子类访问,则应使用protected修饰该成员。

super关键字

指向父类实例的引用

用来显式访问父类成员或构造方法

方法重载和方法覆盖(重写)

方法名称和参数列表不一致(方法重载)

方法名称和参数列表一致(方法覆盖)

三、多态

在同一继承树上的不同对象针对同一行为的不同表现。

(有继承关系同时有方法的覆盖)

例如,当听到“Cut” 这个单词时,理发师的行为表现是剪发,演员的行为表现是停止表演等。不同的对象,所表现的行为是不一样的。

格式:

父类名称 对象名 = new 子类名称();

接口名称 对象名 = new 实现类名称();

例如:学生既是学生也是人。(两种形态:学生 人)

类型变换

向上转型(子类转为父类)自动转换(隐性转换)

Dog dog = new PetDog();

向下转型(父类转为子类)须强制类型转换

PetDog petDog = (PetDog)dog

instanceof运算符

对象名称 instanceof 类名

(判断这个对象是否是类的实例)

Object类

构造方法:Object()

常用操作:equals和toString

“火锅底料”例子说明三者之间的关系

 

用一个例子来说明三者间的关系:

“火锅底料”,火锅店老板在生产火锅底料的时候,不想要其他人知道它好吃的秘诀,就用封装的方法把它配料的秘诀隐藏起来。但是每次一锅一锅进行火锅底料的熬煮,很浪费时间和空间,这个时候火锅老板就想到用继承的方法,把相同的佐料直接压缩成一包一包的,不用每次去熬煮火锅底料,就不用重复去做相同的事情。但是过了一段事件后,顾客反应火锅底料有点单调,没有特色,这个时候火锅点老板就想出其他口味的火锅底料来满足顾客。