面向对象的概念 构造方法 this和static关键字

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

第3章 使用类和对象编程 软 件 学 院 朱士明 副教授.
第4讲 使用类和对象编程(二) 对象 静态变量和静态方法 再谈方法.
项目三 Java面向对象程序设计 任务一 了解面向对象程序设计的基本概念 任务二 掌握类的使用方法 任务三 熟悉对象的创建与使用方法
西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象.
第3章 面向对象的编程技术.
Java语言的特点 Java开发环境的搭建
第四章 类 和 对 象.
第4章 类 和 对 象.
3.6 static关键字 3.7 内部类 3.8 Java的帮助文档
Java软件开发基础 4. 面向对象的程序设计基础.
第3章 面向对象程序设计.
配合< Java面向对象程序设计>例子源代码一起使用
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
第13讲 面向对象(1) 3.1 面向对象的概念 3.2 类与对象.
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
类与对象 Java 实用技术4 类与对象
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
Java 第12讲:static与方法重载 主讲教师:李焱 讲师.
第四章 Java面向对象程序设计.
第8章 类和对象 Java语言是一种纯面向对象的语言,如果要使用Java进行面向对象编程,首先就要建立面向对象思想。
Java Applet 介绍.
面向对象建模技术 软件工程系 林 琳.
第4章 面向对象编程方法 王德俊 上海交通大学继续教育学院.
Java习题解析.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第二章 Java语言基础.
动态规划(Dynamic Programming)
Java程序设计 第7章 对象和类.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第三章 面向对象编程 讲师:复凡.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
C#面向对象程序设计 $6 深入理解类.
类与对象 访问修饰限定符 继承与重写 自动加载 异常处理 抽象类与接口
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
项目二:HTML语言基础.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第4章 Excel电子表格制作软件 4.4 函数(一).
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
iSIGHT 基本培训 使用 Excel的栅栏问题
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
海报题目 简介: 介绍此项仿真工作的目标和需要解决的问题。 可以添加合适的图片。
临界区问题的硬件指令解决方案 (Synchronization Hardware)
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
本节内容 结构体.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
海报题目 简介: 介绍此项仿真工作的目标和需要解决的问题。 可以添加合适的图片。
Presentation transcript:

面向对象的概念 构造方法 this和static关键字 第三章 面向对象(上) 面向对象的概念 构造方法 this和static关键字 类与对象 内部类

✎ 学习目标 掌握类和对象相关知识 1 掌握 理解 了解 熟悉 2 理解面向对象思想 了解垃圾回收机制 4 3 熟悉Java帮助文档使用

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 面向对象的概念 类与对象 构造方法 this关键字 垃圾回收 ☞点击查看本小节知识架构 3.3 构造方法 ☞点击查看本小节知识架构 3.4 this关键字 垃圾回收 3.5 3.6 static关键字 ☞点击查看本小节知识架构 3.7 内部类 ☞点击查看本小节知识架构 3.8 Java的帮助文档 ☞点击查看本小节知识架构

 知识架构 3.2 类与对象 返回目录 3.2.1 类的定义 3.2.2 对象的创建与使用 3.2.3 类的设计 3.2.4 类的封装

 知识架构 3.3 构造方法 返回目录 3.3.1 构造方法的定义 3.3.2 构造方法的重载

 知识架构 3.6 static关键字 3.6.1 静态变量 3.6.2 静态方法 3.6.3 静态代码块 3.6.4 单例设计模式 返回目录 3.6.1 静态变量 3.6.2 静态方法 3.6.3 静态代码块 3.6.4 单例设计模式

 知识架构 3.7 内部类 返回目录 3.7.1 成员内部类 3.7.2 静态内部类 3.7.3 方法内部类

 知识架构 3.8 Java的帮助文档 返回目录 3.8.1 Java的文档注释 3.8.2 JDK帮助文档的使用

3.1 面向对象的概念 什么是面向对象?

3.1 面向对象的概念 想一想 在程序中 如何表示这些事物? 在程序中,事物是用对象表示的。

3.1 面向对象的概念 面向对象是一种符合人类思维习惯的编程思想。 现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。 在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。 [点击播放视频]

3.1 面向对象的概念 面向对象的三大特征 封装性 继承性 多态性 是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想 主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展 指在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为

3.2 类与对象 面向对象的编程思想力图在程序中对事物的描述与该事物在现实中的形态保持一致。为了做到这一点,面向对象的思想中提出两个概念,即类和对象。 类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。类和对象的关系如同玩具和玩具模型的关系。 [点击播放视频]

3.2 类与对象 3.2.1 类的定义 在面向对象的思想中最核心就是对象,为了在程序中创建对象,首先需要定义一个类。 3.2.1 类的定义 在面向对象的思想中最核心就是对象,为了在程序中创建对象,首先需要定义一个类。 类是对象的抽象,它用于描述一组对象的共同特征和行为 类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也被称作属性,成员方法用于描述对象的行为,可简称为方法。

3.2 类与对象 3.2.1 类的定义 接下来,通过一个案例来学习如何定义一个类,如例3-1所示。 [点击查看例3-1]

3.2 类与对象 3.2.2 对象的创建与使用 应用程序想要完成具体的功能,仅有类是远远不够的,还需要根据类创建实例对象。 在Java程序中可以使用new关键字来创建对象,具体格式如下: 例如,创建一个Person对象,具体示例如下: [点击播放视频]

3.2 类与对象 3.2.2 对象的创建与使用 “new Person()”用于创建Person类的一个实例对象,“Person p”则是声明了一个Person类型的变量p。中间的等号用于将Person对象在内存中的地址赋值给变量p,这样变量p便持有了对象的引用。 变量p和对象之间的引用关系如下图所示。

3.2 类与对象 3.2.2 对象的创建与使用 在创建Person对象后,可以通过对象的引用来访问对象所有的成员,具体格式如下: 接下来,通过一个案例来演示对象的创建与使用,如例3-2所示。 [点击查看例3-2]

3.2 类与对象 3.2.2 对象的创建与使用 针对不同类型的成员变量,Java虚拟机会赋予不同的初始值

3.2 类与对象 3.2.2 对象的创建与使用 当对象被实例化后,在程序中可以通过对象的引用变量来访问该对象的成员。当没有任何变量引用这个对象时,它将成为垃圾对象,不能再被使用。 情况1:变量超出作用域变为垃圾对象

3.2 类与对象 3.2.2 对象的创建与使用 情况2:将变量的值赋为null。 接下来,通过一个案例演示情况2,如例3-3所示。 [点击查看例3-3]

3.2 类与对象 3.2.3 类的设计 假设要在程序中描述一个学校所有学生的信息,可以先设计一个学生类(Student),在这个类中定义两个属性name、age分别表示学生的姓名和年龄,定义一个方法introduce()表示学生做自我介绍。 接下来,根据上面的描述,设计一个Student类,设计出来的Student类如例3-4所示。 [点击查看例3-4]

3.2 类与对象 3.2.4 类的封装 类的封装是指在定义一个类时,进行下列操作: (1)将类中的属性私有化,即使用private修饰属性 (2)在类中提供公用的可以获取属性值的getXxx方法 (3)在类中提供公用的可以设置属性值的setXxx方法 [点击播放视频]

3.2 类与对象 3.2.4 类的封装 接下来,针对例3-4中设计的Student类创建对象,并访问该对象的成员,具体如例3-5所示。 [点击查看例3-5] [点击查看例3-6]

3.3 构造方法 3.3.1 构造方法的定义 在一个类中定义的方法如果同时满足以下三个条件,该方法称为构造方法,具体如下: (1)方法名和类名相同 (2)方法名的前面没有返回值类型的声明 (3)方法中不能使用return语句返回一个值 [点击播放视频]

3.3 构造方法 3.3.1 构造方法的定义 对构造方法的特点有所了解后,接下来,通过一个案例来演示如何在类中定义构造方法,具体如例3-7所示。 在一个类中,除了可以定义无参的构造方法,也可以定义有参的构造方法,通过有参的构造方法可以实现对属性的赋值,接下来,对例3-7进行改写,改写后的代码如例3-8所示。 [点击查看例3-7] [点击查看例3-8]

3.3 构造方法 3.3.2 构造方法的重载 和普通方法一样,构造方法也可以重载 在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。 在创建对象时,可以通过调用不同的构造方法为不同的属性赋值 [点击播放视频]

3.3 构造方法 3.3.2 构造方法的重载 接下来,通过一个案例来学习构造方法的重载,具体如例3-9所示 [点击查看例3-9]

脚下留心 在Java中的每个类至少都有一个构造方法,如果在一个类中没有定义构造方法,系统会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,在其方法体中没有任何代码,即什么都不做。下列程序中Person类的两种写法效果是完全一样的 第一种写法: 第二种写法:

脚下留心 当为某个类定义了有参数的构造方法后,这时,系统就不再提供默认的构造方法,接下来,通过一个案例来测试,如例3-10所示。 思考,声明构造方法时,可以使用private访问修饰符吗?接下来,通过一个案例来演示,如例3-11所示。 [点击查看例3-10] [点击查看例3-11]

脚下留心 在Java中的每个类都至少有一个构造方法,如果在一个类中没有定义构造方法,系统会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,在其方法体中没有任何代码,即什么也不做。 如果一个类中定义了构造方法,系统就不再提供默认的构造方法了

3.4 this关键字 this关键字的用法 1、通过this关键字可以明确地去访问一个类的成员变量,解决与 局部变量名称冲突的问题,具体示例如下: 构造方法的参数被定义为age,它是一个局部变量,在类中还定义了一个成员变量,名称也是age。在构造方法中如果使用“age”,则是访问局部变量,但如果使用“this.age”则是访问成员变量 [点击播放视频]

3.4 this关键字 this关键字的用法 2、通过this关键字调用成员方法 在上面的代码中,构造方法的参数被定义为age,它是一个局部变量,在类中还定义了一个成员变量,名称也是age。在构造方法中如果使用“age”,则是访问局部变量,但如果使用“this.age”则是访问成员变量

3.4 this关键字 this关键字的用法 3、构造方法是在实例化对象时被Java虚拟机自动调用的,在程序中不能像调用其它方法一样去调用构造方法,但可以在一个构造方法中使用“this([参数1,参数2…])”的形式来调用其它的构造方法。 接下来通过一个案例来演示,如例程3-12所示。 [点击查看例3-12]

3.4 this关键字 注意事项: 1、只能在构造方法中使用this调用其它的构造方法

3.5 垃圾回收 对象成为垃圾后仍会占用内存空间,时间一长,就会导致内存空间的不足,针对这种情况,Java中引入了垃圾回收机制。 除了等待Java虚拟机进行自动垃圾回收,也可以通过调用System.gc()方法来通知Java虚拟机立即进行垃圾回收。

3.5 垃圾回收 当一个对象在内存中被释放时,它的finalize()方法会被自动调用 接下来,通过一个案例来演示Java虚拟机进行垃圾回收的过程,具体如例3-13所示。 [点击查看例3-13]

3.6 static关键字 3.6.1 静态变量 在一个Java类中,可以使用static关键字来修饰成员变量,该变量被称作静态变量 静态变量被所有实例共享,可以使用“类名.变量名”的形式来访问 static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错,下面的代码是非法的。 [点击播放视频]

3.6 static关键字 3.6.1 静态变量 接下来,通过一个案例来演示静态变量的用法,具体如例3-14所示。 [点击查看例3-14]

3.6 static关键字 3.6.2 静态方法 被static关键字修饰的方法称为静态方法 同静态变量一样,静态方法可以使用“类名.方法名”的方式来访问,也可以通过类的实例对象来访问。 在一个静态方法中只能访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。 [点击播放视频]

3.6 static关键字 3.6.2 静态方法 接下来,通过一个案例来学习静态方法的使用,如例3-15所示。 [点击查看例3-15]

3.6 static关键字 3.6.3 静态代码块 在Java中,使用一对大括号包围起来的若干行代码被称为一个代码块。 当类被加载时,静态代码块会执行,并且只会执行一次。 在程序中,经常使用静态代码块来对类的成员变量进行初始化。 [点击播放视频]

3.6 static关键字 3.6.3 静态代码块 接下来,通过一个案例来学习静态代码块的用法,具体如例3-16所示。 [点击查看例3-16]

3.6 static关键字 3.6.4 单例模式 设计模式就是针对这些问题和需求,在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式 单例模式是Java中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象 [点击播放视频]

3.6 static关键字 3.6.4 单例模式 掌握了单例模式的相关知识后,接下来,通过一个案例来实现单例模式,如例3-17所示。 编写一个测试类对实现了单例的Single类进行测试,具体代码如例3-18所示。 [点击查看例3-17] [点击查看例3-18]

多学一招 3.6.4 单例模式 单例模式还可以写成其他形式,具体如例3-19所示。 [点击查看例3-19]

3.7 内部类 3.7.1 成员内部类 在一个类中除了可以定义成员变量、成员方法,还可以定义类,这样的类被称作成员内部类。 在成员内部类中可以访问外部类的所有成员 如果想通过外部类去访问内部类,则需要通过外部类对象去创建内部类对象,创建内部类对象的具体语法格式如下: [点击播放视频]

3.7 内部类 3.7.1 成员内部类 接下来,通过一个案例来演示成员内部类的使用,如例3-20所示。 对例3-20定义的Outer类写一个测试程序,如例3-21所示。 [点击查看例3-20] [点击查看例3-21]

3.7 内部类 3.7.2 静态内部类 使用static关键字来修饰一个成员内部类,该内部类被称作静态内部类,它可以在不创建外部类对象的情况下被实例化。 创建静态内部类对象的具体语法格式如下: [点击播放视频]

3.7 内部类 3.7.2 静态内部类 接下来,通过一个案例来演示静态内部类的用法,如例3-22所示。 [点击查看例3-22]

3.7 内部类 3.7.3 方法内部类 方法内部类是指在成员方法中定义的类,它只能在当前方法中被使用。 接下来,通过一个案例来演示方法内部类的使用,如例3-23所示。 [点击播放视频] [点击查看例3-23]

3.8 Java的帮助文档 3.8.1 Java的文档注释 文档注释用于是嵌入到程序当中的帮助信息,用于说明如何使用当前程序,它以“/**”开头,以“*/”标志结束 Java中提供了javadoc命令,它可以将这些帮助信息提取出来,自动生成HTML格式的帮助文档,从而实现程序的文档化

3.8 Java的帮助文档 3.8.1 Java的文档注释 接下来,就为大家演示如何使用javadoc命令生成帮助文档,首先需要定义一个Person类,在Person类中定义一个构造方法和一个read()方法,具体如例3-24所示。 在定义好的Person类中加入文档注释,修改后的代码如例3-25所示。 [点击查看例3-24] [点击查看例3-25]

3.8 Java的帮助文档 3.8.1 Java的文档注释 为程序添加文档注释后,便可以使用javadoc命令生成Person类的帮助文档。打开命令行窗口,进入程序所在的目录,输入生成文档的命令,具体如下所示: 其中: -d 用来指定输出文档存放的目录 . 表示当前的目录 -version 用来指定输出文档中需包含版本信息 -author 用来指定输出文档中需包含作者信息

3.8 Java的帮助文档 3.8.2 JDK帮助文档的使用 JDK帮助文档是Oracle公司针对JDK中所有的Java类提供的一整套帮助文档,它详细介绍了所有Java类的属性、方法、继承关系和示例用法等内容 JDK帮助文档通常有两种,一种是Oracle公司官方发布的HTML格式的JDK帮助文档,一种是由一些Java爱好者根据官方文档制作而成的CHM格式的JDK帮助文档。

本章小结 本章详细介绍了面向对象的基础知识,包括什么是面向对象、类和对象之间的关系、类的封装与使用、构造方法的定义与重载、this关键字、static关键字、内部类等 重点在于面向对象的编程思想、类和对象、类的封装、构造方法以及this关键字的使用,大家应该多思考,深刻领会面向对象的好处 熟练掌握好这些知识,有助于学习下一章的内容。深入理解面向对象的思想,对以后的实际开发也是大有裨益的