Java面向对象程序设计第4章_类与对象分析
Java面向对象程序设计第4章_类与对象(1)

类与对象
主讲:王美丽
办公室:信息学院403 Email: meili_w@
本章内容
1 面向对象程序设计的基本概念 2
类的定义 创建对象
3 4
隐藏和封装
编程语言的几个发展阶段
机器语言
直接由计算机的指令组成,指令、数据、地址都以“0” 和“1”来表示,可以被计算机直接执行。
a null a 2004 8 5
… … …
对 象 的 方 法
(a)
(b)
Student s=new Student(“小张”,”22”,”清华大学”) ;
三、创建对象
1、对象的使用(1) 使用对象的成员变量或方法
注1:先声明对象引用的名字,加一个“.”,跟上 对象成员的名字 注2:在Java语言里,方法只能是类的一部分;因 此,只能通过对象来调用方法
面向对象的程序设计
Java、C++
语言的发展是朝着人类更容易理解的方向前进
类与对象引入
大小 颜色
长大
颜色变化 成熟落地
香味
有一个名字用来惟一地标识该客观实体 有一组属性用来描述其特征(名词-决定 对象的特点) 有一组方法用来实现其功能(动词-描述 对象的行为)
一、基本概念
类是对具有相同属性和相同方法的一组相似对象
返回
小结
基本概念:类、对象 类的定义:声明类、成员变量、成员方法
三、创建对象
对象和数组一样,也是引用类型。
数组怎么定义和 使用的?
1、定义数组变量 2、为数组分配内存单元 3、使用数组元素
Int a[]; a=new int[5]; a[0]=10;
三、创建对象
Java程序设计4对象和类PPT课件

Java程序设计程序设计程序设计程
2
序设计
4.1 什么是对象
对象是什么?
对象就是组成现实世界的个体,它们之间存在着错综复杂 的关系,正是这种关系的存在构成了丰富多彩的世界。面 向对象的分析就是要把这些对象以及对象之间的关系找出 来。
现实生活中的ห้องสมุดไป่ตู้象
学生、课程、教师、选课单... 一个银行转帐监视系统中的帐户、交易、审查策略...
addCourse(Course cor) showAcademicRecord()
aStudent : Student 对象的简化符号
对象的符号
aStudent:Student
id=”2005061234” name=”张华” grnder=’男’ speciality=”计算机”
Java程序设计程序设计程序设计程
Eden Space
JVM heap中不同对象存在区域(generation)的位置
Java程序设计程序设计程序设计程
12
序设计
4.2 进一步了解对象
封装 对象之间的关系-消息、组合和聚合 类
Java程序设计程序设计程序设计程
13
序设计
4.2 进一步了解对象(cont.)
1.封装
对于软件世界,对象就是一个由属性集和方法集构成的独 立存在。在面向对象领域中把这种构成称为封装 (Encapsulation),封装技术带来的直接优势就是信息 隐藏(Information-hiding)和模块化(Modularity),就是在 进行设计时所追求的低耦合、高内聚。
String speciality; private date birthdate;
Java程序设计程序设计程序设计程
java课件 第4章 类与对象.ppt

//引用变量的赋值
s = “World”;
s 0x1234567 t 0x1234567
“World”
21
4.2 对象
1. 对象的生成 2. 对象的使用 3. 对象的清除
22
2. 对象的使用
通过运算符“.”可以实现两种操作: 1. 变量的访问: objectReference .variable
4.1 类
1.类声明 2.类体 3.成员变量 4.成员方法 5.参数传值 6.构造方法 7.方法重载
14
6.构造方法
➢ 构造方法是一个特殊的方法。 用来初始化该类的一个对象。
➢ 名称 不返回任何数据类型
➢ 构造方法只能由new运算符调用。
➢ 允许一个类中有多个构造方法 (方法重载)
15
7.方法重载
r2 0xBB42
33 sideA 66 sideB
增加赋值语句 r1= r2;内存分配情况
33 sideA 66 sideB
两个对象有相 同的引用,就 有同样的实体。
1. 对象的生成
int x=7;
int y=x;
String s=“hello”; //对String的引用
String t=s;
➢ 成员变量在整个类内都有效,与先后位置无关。 ➢ 例:“机动车”的类;也可以写成:
7
4.成员方法
➢ 包括两部分:方法声明、方法体 [public|protected|private][static][final|abstract][native] [synchronized] returnType methodName ([paramList]) [throws exceptionList] { //方法体
Java04 类和对象

为什么需要包
生活案例
文档分门别类,易于查找
易于管理
不同内容的文档可以放在不同的 袋子中,拥有相同的名字,避免冲突
为什么需要包
树形文件系统
使用目录解决文件同名冲突问题
如何存放两个同名的类而不冲突?
插入排序 Sort.java 冒泡排序 Sort.java
什么是封装
面向对象三大特征之一——封装
封装的概念
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访 问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的好处
只能通过规 定方法访问 数据
隐藏类的 实现细节 方便加入控 制语句
方便ቤተ መጻሕፍቲ ባይዱ改实现
如何使用封装
Dog
封装的步骤
class Dog { private String name = "旺财"; // 昵称 修改属性的可见性 1 private int health = 100; // 健康值 private int love = 0; // 亲密度 + print():void private String strain = "拉布拉多犬"; // 品种 + setHealth():void public int getHealth() { 用于属性的 + getHealth():String return health; 2 读写 创建getter/setter 方法 …… } 3 public void setHealth (int health) { if (health > 100 || health < 0) { 对属性值的 this.health = 40; 合法性进行 this代表 在getter/setter 方法中 0和100 System.out.println(" 健康值应该在 之间,默认值是40"); 判断 当前对象 } else 加入属性控制语句 this.health = health; } // 其它getter/setter方法 }
Java面向对象程序设计第4版课件chapter04类和对象

time1.toStandardString();
调用第一个Time1对象的
time1.setTime( 13, 27, 6 );
的成员方法
output += "\n 用setTime方法( 13, 27, 6 )修改time1对象后"+
"\n24时制格式时间: " + time1.toUniversalString() + "\n12时制格式时间: " + time1.toStandardString(); Time1 time2 = new Time1(); time2.setTime( 11, 27, 12 );
时钟类的设计:
(1) 数据属性: 时(int hour); 分 (int minute); 秒 (int second)。
(2) 行为: 设置时间 setTime() ; 显示时间 toUniversalString() 、 toStandardString() ; 走时run() ;
4.1.2 用类实现抽象数据类型:时钟类(续)
秒
public void setTime( int h, int m, int s ){ hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 );
创建Time1类的第二 个对象并赋给引用变
量time2
output += "\n\ntime2对象 \n24时制格式时间: " +
第4章 类和对象

《Java面向对象程序设计案例教 程》
4.4 修饰符的使用 4.4.1 类的访问控制修饰符
(2)不使用public修饰的类仅允许在包内具有可见性,即只 能被同一个包中的类访问,不能被其他包中的类访问。 例如:
class Telphone { //成员变量; //方法();
《Java面向对象程序设计案例教 程》
4.4 修饰符的使用 4.4.1 类的访问控制修饰符
• 针对类的访问控制修饰符,Java仅能使用public(公有)和 默认这两种访问控制符。
(1)使用public修饰的公有类是类的访问控制级别中使用数 量较多的一种,它对所有类都是可见的,既可以被同一个包中 的类访问,也可以被其他包中的类访问。 例如:
《Java面向对象程序设计案例教 程》
4.5 基础类的使用
4.5.1 Math类的使用
Math类包含常用的数学运算的标准方法,如初等指数、对 数、平方根和三角函数等。Math类提供的方法都是静态的,可 以直接调用,无需实例化。
• Math类常用方法的名方法:
abs(double a) ceil(double a) floor(double a) round(double a) max(double a,double b) min(double a,double b) sin(double a) tan(double a) cos(double a) sqrt(double a) pow(double a,double b) random()
boolean after(Date when) 判断日期是否在指定日期之后,如果是则返回ture,否则返回false
Java语言04(类和对象)精品PPT课件
2.类的定义格式
类是Java程序的基本单元,当开始编写Java程 序时也就是要开始建立一个类。 类的声明格式如下:
[修饰符] class <类名>[extends 父类名] [implements 接口名] {}
关于修饰符
修饰符分为访问控制符和类型说明 符2个部分,分别用来说明类的访问权 限以及是否为抽象类或最终类。
创建对象
创建对象包括对象声明和对象初始化两部分:通 常这两部分是结合在一起的,即定义对象的同时对其 初始化,为其分配空间,并进行赋值。其格式为:
<类名> <对象名> = new <构造函数> ([参数列表]) 例如:
Circle MyCircle; MyCircle=new Circle(); 或 Circle MyCircle=new Circle();
引用类型
对象是引用类型。引用类型是指该类型 的标识符表示的一片连续内存地址的首地址。 对象定义后系统将给对象标识符为分一个内 存单元,用以存储实际对象在内存中的存储 位置。在没有用new关创建实际对象前,对 象名的值为null。
关键字new的作用
1. 为对象分配内存空间。 2. 引用对象的构造方法为对象初始化。 3. 为对象返回一个引用。
1. class Number//对象赋值示例
2. {
3. int i;Fra bibliotek4. public static void main(String[] args)
5.
{
6.
Number n1=new Number();
7.
Number n2=new Number();
8.
n1.i=9;
Java笔记 第4章 类和对象
错误!未找到目录项。
第四章类和对象第一节面向对象的基本概念基本概念:在分析阶段,根据系统功能的需要,找出必要的一些实体,例如选课系统中(学生和课程),称为对象。
在编码阶段,如何来定义这些实体呢?根据客观存在的实体找出它们的共同的属性(数据成员)和特征(功能/方法成员)形成一个类。
之后再通过类去创建对象。
类与对象的关系是:类是对象的抽象(高度的概括),对象是类的实例(实体)。
类是java中的一种复合的数据类型(是属性和方法的统一体)1、面向对象编程基本特征:(1)抽象:高度的概括,即由客观存在的实体到类的过程。
(2)封装:数据成员私有化,提供公共的访问者方法,封装的过程是类对外部隐藏细节的过程,类外想要访问隐藏的细节,必须通过公共的访问者方法来进行。
(3)继承:实现代码重用。
(4)多态:同名方法的调用产生不同的行为结果。
2、面向对象编程(OO)的基本步骤:(1)OOA:面向对象的分析(2)OOD:面向对象的设计(3)OOP:面向对象的编程(4)OOT:面向对象的测试(5)OOSM:面向对象的软件维护第二节定义类的语法:一. 完全语法形式;修饰符class 类名【extends 父类名】【implements 接口名1【,接口名2....】】{类的定义}说明:修饰符访问权限的修饰符(public default);final 修饰的类不能被继承abstract 修饰抽象类class 关键字extends 继承的关键字,在java中一个类只能有一个父类,只能单继承.避免二义性. implements 类实现接口的关键字,一个类可以实现多个接口.二. 缺省的简单语法定义public class 类名{类体的定义}补充:包:类的容器,定义包的语句是package 包名;package 语句在java源文件中是除了空白和注释的第一条语句,且只能有一条,即一个类只能放在一个包中。
cmd窗口执行时编译Javac –d . 类名.java 如:javac –d . Test04_1.java (点表示当前的工作目录)将java源文件编译后生成的字节码文件保存在以包名为目录名的目录中并保存在当前的工件目录里.带包执行java 包名.类名如:java mypack.T est04_1导包:当使用其他包的类不包括ng时,需要导包,否则类不可见。
JAVA 04类和对象
class TicketMachine { TicketMachine (int ticketCost) { ... } ... }
Constructor
构造函数 (cont’d)
JButton btnOK = new JButton(“确定");
缺省构造函数
如果一个类没有定义构造函数,则编译程序会帮我们 自动创建一个缺省构造函数 一旦我们定义了一个构造函数,就不会帮我们自动再 生成一个
Behaviors
例
Attributes:
String model Color color int numPassengers double amountOfGas
Attributes:
model = “Nissan" color = Color.LIGHT_GRAY numPassengers = 0 amountOfGas = 16.5
Foot Dance selection pulldown list
Dancer
Go / Stop button
Control panel
Dance floor
Positioning button Waltz, etc.
Dance step Dance group
类
类
• 类是对一组性质相同对象的抽象描述,概括了一组对象的共 同性质(数据成员)和行为(函数成员)。 • 用一个类可以定义出不同的对象,这种定义称类的实例化, 即对象是类的实例。
类的定义
class NameofClass { constructor1; constructor2; method1; method2; field1; //成员变量 //成员函数 //构造函数
Java面向对象程序设计第4章_类与对象
信息工程学院本科课程
难点3:参数传值
发生在main()方法或者其它方法调用有 参数的方法的时候 基本类型“传值”:方法中参数变量的 值是调用者指定值的一个拷贝,方法可 以改变参数的值,但是不能改变使用的 变量的值 引用类型“传值”:传递的是变量中存 放的“引用”
P72-73
信息工程学院本科课程
12
信息工程学院本科课程
4.2.4 方法
类似于类的实现结构,方法的实现也包 括两部分:方法声明和方法体 方法声明部分{ 方法体的内容 } 方法起名习惯和类名不同,首个字母约 定使用小写
13
信息工程学院本科课程
4.2.4 方法
方法的声明格式:
返回值类型 方法名(参数1,参数2,…) 当一个方法不需要返回值时,返回类型为 void
信息工程学院本科课程
区别2:
31
4.6.2 实例方法和类方法
区别1: 对象创建后才分配实例方法入口 对象创建前已经分配类方法入口 区别2: 所有对象都不存在时,实例方法的入口地址 撤销 程序退出时,类方法的入口地址才被取消 static方法仅能调用其它的static方法、仅能访 问static数据,不能以任何形式引用this、super
4.3.3 对象的引用和实体
声明一个对象之后,在栈中为其分配引 用;Java的对象在堆(heap)中分配内 存,这些内存空间称为对象的实体 通过引用,可以调用对象的属性和方法 一个类创建的两个对象,如果具有相同 的引用,那么就具有完全相同的实体 没有实体的对象称作空对象,编译器对 空对象不作检查,但是它不能被使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
201 使用对象
1.通过使用运算符“.” 对象操作自己的变量 (对象的属性) 2.使用运算符“. ”,对象调用类中的方法(对 象的功能)
例4-3
2010-1-10
14
§4.3.3 对象的引用和实体
当用类创建一个对象时,类中 的成员变量在分配内存空间,这 些内存空间称作该对象的实体或 对象的变量,而对象中存放着引 用。 一个类创建的两个对象,如果 具有相同的引用,那么就具有完 全相同的实体。
2010-1-10
5
§4.2.2 类体
◆
类声明之后的一对大括号“{”,“}”以及它 们之间的内容称作类体,大括号之间的内容称作 类体的内容。 ◆类体的内容由两部分构:一部分是变量的声明, 用来刻画属性;另一部分是方法的定义,用来刻 画功能。
2010-1-10
6
§4.2.3 成员变量和局部变量
类体中变量声明部分所声明的变量被称作类的成员变量。在方法体中声明
2010-1-10
15
§4.4 参数传值
§4.4.1 基本数据类型参数的传值
对于基本数据类型的参数,向该参数传递
的值的级别不可以高于该参数的级别 。
例4-4
2010-1-10
16
§4.4.2 引用类型参数的传值
当参数是引用类型时,“传值”传递的是变 量中存放的“引用”,而不是变量所引用的实体。
例4-5
2010-1-10 12
§4.3 对象
§4.3.1 创建对象 1.对象的声明 People zhangPing; 2.为声明的对象分配内存 zhangPing=new People();
例4-1,例4-2
3.对象的内存模型 (1)声明对象时的内存模型 (2)对象分配内存后的内存模型
4.创建多个不同的对象
2010-1-10
18
§4.4.4 有理数的类封装
面向对象编程核心思想之一就是将数据和对 数据的操作封装在一起。。 1.Rational(有理数)类 2.用Rational对象做运算
Rational.java MainClass.java
2010-1-10
4
§4.2.1 类声明
◆类声明 :class 类名 如: class People” 和“ class 动物”称作类声明;“ People” 和 “动物”分别是类名。
给类命名时,遵守下列编程风格(这不是语法要求 的,但应当遵守):
◆ 1.如果类名使用拉丁字母,那么名字的首字母使用大写字母, 如。 2.类名最好容易识别、见名知意。当类名由几个“单词”复 合而成时,每个单词的首字母使用大写。
的变量和方法的参数被称作局部变量。 1.变量的类型:成员变量和局部变量的类型可以是Java中的任何一种数据 类型,包括基本类型:整型、浮点型、字符型;引用类型:数组、对象和接口 (对象和接口见后续内容)。 2.变量的有效范围: 成员变量在整个类内都有效,局部变量只在声明它 的方法内有效。方法参数在整个方法内有效,方法内的局部变量从声明它的位 置之后开始有效。 3.实例变量与类变量:在声明成员变量时,用关键字static给予修饰的 称作类变量,否则称作实例变量(类变量也称为static变量,静态变量)。 4.成员变量的隐藏: 如果局部变量的名字与成员变量的名字相同,则成 员变量被隐藏,即这个成员变量在这个方法内暂时失效。
2010-1-10
17
§4.4.3 可变参数
可变参数是指在声明方法时不给出参数列表 中从某项直至最后一项参数的名字和个数,但这 些参数的类型必须相同。可变参数使用“…”表 示若干个参数,这些参数的类型必须相同,最后 一个参数必须是参数列表中的最后一个参数。
例如: public void f(int ... x) 例4-6
2010-1-10
9
§4.2.6 构造方法
构造方法是一种特殊方法,它的名字必须 与它所在的类的名字完全相同,而且没有类型, 构造方法也可以重载。
2010-1-10
10
§4.2.7 类方法和实例方法
方法声明时,方法类型前面不加关键字 static 修饰的是实例方法、加 static 修饰的是 类方法(静态方法)。
5.编程风格
(1)一行只声明一个变量。 (2)变量的名字符合标识符规定。 (3)变量名字见名知意,避免容易混淆的变量名字。
2010-1-10 7
§4.2.4 方法 方法的定义包括两部分:方法声明和方法体。一般格 式为:
方法声明部分 { 方法体的内容 }
1.方法声明 方法声明包括方法名和方法的返回类型,如:
◆ 面向机器语言 ◆面向过程语言
◆面向对象语言
面向对象编程主要体现下列三个特性
◇封装性
◇继承 ◇多态
2010-1-10 3
§4.2 类
类是组成 Java 程序的基本要素。类封装了 一类对象的状态和方法。类是用来定义对象的 模板。 类的实现包括两部分:类声明和类体。基 本格式为:
class 类名 { 类体的内容 }
float area() { … }
注:方法的返回类型、方法的参数、方法的名字
2.方法体 方法声明之后的一对大括号“ {” ,“} ”以及之间的内容 称作方法的方法体。方法体的内容包括局部变量的声明和 Java 语句。
2010-1-10 8
§4.2.5 方法重载
方法重载的意思是:一个类中可以有多个方 法具有相同的名字,但这些方法的参数必须不 同,即或者是参数的个数不同,或者是参数的 类型不同。
2010-1-10
11
§4.2.8 几个值得注意的问题
1.对成员变量的操作只能放在方法中,方 法可以对成员变量和该方法体中声明的局部变 量进行操作。 2.需要注意的是:实例方法既能对类变量操 作也能对实例变量操作,而类方法只能对类变 量进行操作。 3.一个类中的方法可以互相调用,实例方法 可以调用该类中的其它方法;类中的类方法只 能调用该类的类方法,不能调用实例方法。
《Java面向对象程序设计》 第4章
类与对象
2010-1-10
1
导读
主要内容 • 类 • 对象 • 参数传值 • 对象组合 • static关键字 • this关键字 • 包 • import语句 • jar文件 难点 • 参数传值与对象组合 • 包和import语句
2010-1-10 2
§4.1 编程语言的几个发展阶段