面向对象.docx

上传人:b****3 文档编号:2913068 上传时间:2022-11-16 格式:DOCX 页数:175 大小:707.67KB
下载 相关 举报
面向对象.docx_第1页
第1页 / 共175页
面向对象.docx_第2页
第2页 / 共175页
面向对象.docx_第3页
第3页 / 共175页
面向对象.docx_第4页
第4页 / 共175页
面向对象.docx_第5页
第5页 / 共175页
点击查看更多>>
下载资源
资源描述

面向对象.docx

《面向对象.docx》由会员分享,可在线阅读,更多相关《面向对象.docx(175页珍藏版)》请在冰豆网上搜索。

面向对象.docx

面向对象

纲要

面向过程与面向对象的区别

面向对象的三大特性

类与对象的概念

类的定义

对象的创建和使用

Java中的封装特性

构造函数

对象内存分析及引用传递

this关键字

static关键字

单例模式初步

类的继承

方法的覆盖

super关键字

final关键字

抽象类

接口

多态

抽象类与接口的区别

Object类

package和import

访问权限控制

内容

1.1、面向过程与面向对象的区别(盖饭、蛋炒饭)

为什么会出现面向对象分析方法?

因为现实世界太复杂多变,面向过程的分析方法无法满足

面向过程?

采用面向过程必须了解整个过程,每个步骤都有因果关系,每个因果关系都构成了一个步骤,多个步骤就构成了一个系统,因为存在因果关系每个步骤很难分离,非常紧密,当任何一步骤出现问题,将会影响到所有的系统。

如:

采用面向过程生产电脑,那么他不会分CPU、主板和硬盘,它会按照电脑的工作流程一次成型。

面向对象?

面向对象对会将现实世界分割成不同的单元(对象),实现各个对象,如果完成某个功能,只需要将各个对象协作起来就可以。

1.2、面向对象的三大特性

●封装

●继承

●多态

1.3、类与对象的概念

类是对具有共性事物的抽象描述,是在概念上的一个定义,那么如何发现类呢?

通常根据名词(概念)来发现类,如在成绩管理系统中:

学生、班级、课程、成绩

学生—张三

班级—602

课程—J2SE

成绩—张三成绩

以上“张三”、“602”、“J2SE”和“张三的成绩”他们是具体存在的,称为对象,也叫实例

也就是说一个类的具体化,就是对象或实例

为什么面向对象成为主流技术,主要就是因为更符合人的思维模式,更容易的分析现实世界,所以在程序设计中也采用了面向对象的技术,从软件的开发的生命周期来看,基于面向对象可以分为三个阶段:

●OOA(面向对象的分析)

●OOD(面向对象的设计)

●OOP(面向对象的编程)-----Java就是一个纯面向对象的语言

我们再进一步的展开,首先看看学生:

学生:

学号、姓名、性别、地址,班级

班级:

班级代码、班级名称

课程:

课程代码、课程名称

成绩:

学生、课程、成绩

大家看到以上我们分析出来的都是类的属性

接下来采用简易的图形来描述一下,来描述我们的概念(来源成绩管理系统的概念,来源于领域的概念,这个领域就是成绩系统管理领域)

以上描述的是类的属性,也就是状态信息,接下来,再做进一步的细化

通过以上分析,大家应该了解:

类=属性+方法

属性来源于类的状态,而方法来源于动作

以上模型完全可以使用面向对象的语言,如Java来实现

1.4、类的定义

在Java中如何定义类?

具体格式:

类的修饰符class类名extends父对象名称implements接口名称{

类体:

属性和方法组成

}

【示例代码】

publicclassStudent{

//学号

intid;

//姓名

Stringname;

//性别

booleansex;

//地址

Stringaddress;

//年龄

intage;

}

以上属性称为成员变量,局部变量是在方法中定义的变量,方法的参数,方法的返回值,局部变量使用前必须初始化,而成员变量会默认初始化,初始化的值名为该类型的默认值

1.5、对象的创建和使用

(必须)使用new创建出来,才能用。

【示例代码】

publicclassOOTest01{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

System.out.println("id="+zhangsan.id);

System.out.println("name="+zhangsan.name);

System.out.println("sex="+zhangsan.sex);

System.out.println("address="+zhangsan.address);

System.out.println("age="+zhangsan.age);

}

}

classStudent{

//学号

intid;

//姓名

Stringname;

//性别

booleansex;

//地址

Stringaddress;

//年龄

intage;

}

具体默认值如下:

类型

默认值

byte

0

short

0

int

0

long

0L

char

‘\u0000’

float

0.0f

double

0.0d

boolean

false

引用类型

null

对成员变量进行赋值

publicclassOOTest02{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

zhangsan.id=1001;

zhangsan.name="张三";

zhangsan.sex=true;

zhangsan.address="北京";

zhangsan.age=20;

System.out.println("id="+zhangsan.id);

System.out.println("name="+zhangsan.name);

System.out.println("sex="+zhangsan.sex);

System.out.println("address="+zhangsan.address);

System.out.println("age="+zhangsan.age);

}

}

classStudent{

//学号

intid;

//姓名

Stringname;

//性别

booleansex;

//地址

Stringaddress;

//年龄

intage;

}

一个类可以创建N个对象,成员变量只属于当前的对象(只属于对象,不属于类),只有通过对象才可以访问成员变量,通过类不能直接访问成员变量

以上程序存在缺点,年龄可以赋值为负数,怎么控制不能赋值为负数?

1.6、面向对象的封装性

控制对年龄的修改,年龄只能为大于等于0并且小于等于120的值

publicclassOOTest03{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

/*

zhangsan.id=1001;

zhangsan.name="张三";

zhangsan.sex=true;

zhangsan.address="北京";

zhangsan.age=20;

*/

zhangsan.setId(1001);

zhangsan.setName("张三");

zhangsan.setSex(true);

zhangsan.setAddress("北京");

zhangsan.setAge(-20);

System.out.println("id="+zhangsan.id);

System.out.println("name="+zhangsan.name);

System.out.println("sex="+zhangsan.sex);

System.out.println("address="+zhangsan.address);

System.out.println("age="+zhangsan.age);

}

}

classStudent{

//学号

intid;

//姓名

Stringname;

//性别

booleansex;

//地址

Stringaddress;

//年龄

intage;

//设置学号

publicvoidsetId(intstudentId){

id=studentId;

}

//读取学号

publicintgetId(){

returnid;

}

publicvoidsetName(StringstudentName){

name=studentName;

}

publicStringgetName(){

returnname;

}

publicvoidsetSex(booleanstudentSex){

sex=studentSex;

}

publicbooleangetSex(){

returnsex;

}

publicvoidsetAddress(StringstudentAddress){

address=studentAddress;

}

publicStringgetAddress(){

returnaddress;

}

publicvoidsetAge(intstudentAge){

if(studentAge>=0&&studentAge<=120){

age=studentAge;

}

}

publicintgetAge(){

returnage;

}

}

从上面的示例,采用方法可以控制赋值的过程,加入了对年龄的检查,避免了直接操纵student属性,这就是封装,封装其实就是封装属性,让外界知道这个类的状态越少越好。

以上仍然不完善,采用属性仍然可以赋值,如果屏蔽掉属性的赋值,只采用方法赋值,如下:

publicclassOOTest04{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

zhangsan.id=1001;

zhangsan.name="张三";

zhangsan.sex=true;

zhangsan.address="北京";

zhangsan.age=20;

/*

zhangsan.setId(1001);

zhangsan.setName("张三");

zhangsan.setSex(true);

zhangsan.setAddress("北京");

zhangsan.setAge(20);

*/

/*

System.out.println("id="+

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1