博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

面向对象思想

Posted on 2020-06-30 17:11  kali98k  阅读(165)  评论(0编辑  收藏  举报

面向对象思想

一、面向对象

1.1概述

对象泛指现实中一切事物,每种事物都具备自己的属性行为

向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。

1.2举例

洗衣服:

面向过程:把衣服脱下来-->找一个盆-->放点洗衣粉-->加点水-->浸泡10分钟-->揉一揉-->清洗衣服-->拧干--> 起来

面向对象:把衣服脱下来-->打开全自动洗衣机-->扔衣服-->按钮-->晾起来

区别:

面向过程:强调步骤。

面向对象:强调对象,这里的对象就是洗衣机

1.3特点

面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。

三大基本特征,即封装、继承和多态。

1.4类和对象

什么是类

:是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物。

现实中,描述一类事物:

属性:就是该事物的状态信息。

行为:就是该事物能够做什么。

举例:小猫。

属性:名字、体重、年龄、颜色。

行为:走、跑、叫。

什么是对象

对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性 和行为。

类与对象的关系

类是对一类事物的描述,是抽象的

对象是一类事物的实例,是具体的

类是对象的模板,对象是类的实体

1.5 类的定义 

 

现实世界的一类事物:

属性:事物的状态信息。

行为:事物能够做什么。

Java中用class描述事物也是如此:

成员变量:对应事物的属性

成员方法:对应事物的行为

类的定义格式

定义类:就是定义类的成员,包括成员变量成员方法

类的定义格式举例:

public class ClassName {

//成员变量

//成员方法

}

1.6对象的使用

对象的使用格式

创建对象

类名 对象名 = new 类名();

使用对象访问类中的成员:

对象名.成员变量;

对象名.成员方法()

 

 

 

 

 

二、封装

2.1 封装概述
面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性

2.2 封装的步骤

1. 使用 private 关键字来修饰成员变量。

2. 对需要访问的成员变量,提供对应的一对 getXxx 方法 setXxx 方法

2.3 封装的操作——private关键字 

private的含义

1. private是一个权限修饰符,代表最小权限。

2. 可以修饰成员变量和成员方法。

3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。

private的使用格式

1. 使用 private 修饰成员变量,代码如下:

2. 提供 getXxx 方法 / setXxx 方法,可以访问成员变量,代码如下:

private 数据类型 变量名

2.4this关键字

this的含义

this代表所在类的当前对象的引用(地址值),即对象自己的引用。

记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁

this使用格式

this.成员变量名;

 

三、继承

3.1定义

继承:就是子类继承父类的属性行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。

3.2 继承的格式

通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:

继承演示,代码如下:

class 父类 {

...

}

class 子类 extends 父类 {

...

}

3.3 继承后的特点——成员变量

成员变量重名

子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰 父类成员变量,类似于之前学过的 this

使用格式:

super.父类成员变量名

3.4 继承后的特点——成员方法

成员方法重名——重写(Override)

如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)

方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效 果,也称为重写或者复写。声明不变,重新实现

3.5 继承后的特点——构造方法

1. 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。

2. 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构 造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用

3.6 superthis

 

父类空间优先于子类对象产生

在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空 间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构 造方法调用时,一定先调用父类的构造方法。理解图解如下:

 

 

 

superthis的含义

super :代表父类的存储空间标识

this :代表当前对象的引用

3.7 继承的特点

1. Java只支持单继承,不支持多继承

//一个类只能有一个父类,不可以有多个父类。

class C extends A{} //ok

class C extends A,B... //error

四、多态

4.1定义

多态 是指同一行为,具有多个不同表现形式。

4.2 实现

1. 继承

2. 方法的重写

3. 父类引用指向子类对象

父类类型 变量名 = new 子类对象;

变量名.方法名();