Java 2实用教程第4版_第4章_类与对象
JAVA-L4-类与对象
域的类型
域可以被声明为基本数据类型和类类型 基本数据类型包括:
布尔类型 boolean 字符类型 char 整数类型 byte short int long 浮点类型 float double 类类型包括各种类、抽象类和接口
域的初始化
Java语言是一种强类型语言,所有变量(域和方法
静态域
声明为static的域,称为静态域或类变量(class
variables),没有被static修饰的域,称为非静态 域或实例变量(instance variables) 静态域类似于类的全局变量,用于表示类本身的 状态,被类的所有对象共享 静态域可以通过类名或对象两种方式访问,一般 通过类名访问
中的局部变量)必须被初始化后才能使用 域的初始化可以使用两种方式:隐式和显式
隐式初始化:被声明为域的变量取其类型的默认值
<修饰符> <类型> <域名>;
显式初始化:由初始化表达式计算得到域的初值
<修饰符> <类型> <域名>=<初始值表达式>;
域类型的默认值
类型
boolean char byte short int long float double Object Reference
初始值
false „\u0000‟ 0 0 0 0 0.0f 0.0 null
class Body{ public long idNum; 0 public String name; null public Body orbits; null public static long nextID=5; 5 }
类的成员(Members)
Java 2实用教程课件(第3版第4章)
4.3 对象
3.对象的引用和实体 对象的引用和实体
当用类创建一个对象时,类中的成员变量被分配内存空间, 这些内存空间称做该对象的实体,而对象中存放着引用, 以确保实体由该对象操作使用。 一个类创建的两个对象,如果具有相同的引用,那么就具 有完全相同的实体。 没有实体的对象称作空对象,空对象不能使用,即不能让 一个空对象去调用方法产生行为。
4.6 包
二.编译和运行包中的类 包中的类
第4章 类、对象和接口
4.1 面向对象的设计思想 4.2 类 4.3 对象 4.4 static 关键字 4.5 this 关键字 4.6 包 4.7 访问权限 4.8 类的继承 4.9 对象的上转型对象 4.10 多态性 4.11 abstract 类和 类和abstract 方法 4.12 super关键字 关键字 4.13 接口 4.14 内部类 4.15 匿名类 4.16 异常类 4.17 Class类 类 4.18 基本类型的类包装 4.19 反编译和文档生成器 4.20 jar文件 文件
4.2 类
4.成员方法
格式:[修饰符] 返回值类型 方法名(参数表) { 方法体 } 说明:
4.2 类
class 梯形 { float 上底,下底,高,laderArea; //变量定义部分 float 计算面积() //方法定义 { laderArea=(上底+下底)*高/2.0f; return laderArea; } void 修改高(float h) //方法定义 { 高=h; } }
注:父类名只有1个,接口名可以有多个
结构说明
package表示本程序所属的包(组织类的一种结构),如 果需定义包,加此语句,没有此语句,属于默认包。 Import表示引入其他类,以便于在下面的类中使用。 类定义是java源程序的主要部分,每个文件中可以定义若 干个类,但只有一个类是主类。在java Application中, 这个主类是指包含main()方法的类;在java Applet中, 主类是系统类Applet的一个子类。主类是java程序执行的 入口点。 同一个java程序中定义的若干类之间没有严格的逻辑关系 要求,但它们通常是在一起协同工作的,每一个类都可能 需要使用其他类中定义的属性或方法。
java4章
第4章类和对象本章主要介绍Java语言中类的定义及类的访问控制、成员的定义及成员的访问控制、对象的创建、数组的创建及使用。
第4章类和对象4.1 OO(Object-oriented)基本概念4.2 类的定义4.3 域(成员变量/字段)声明4.4 方法的定义4.5 类变量的初始化形式4.6 类对象的初始化形式4.7 数组4.7.1 数组的创建形式4.7.2 (一组)数组的应用4.7.3 多维数组4.8 对象的撤消(清除)4.9 小结4.1 OO(Object-oriented)基本概念1. 对象(Object)⏹现实世界的对象:有自己的状态,如一台空调有自己编号、摆放位置、颜色、尺寸、重量、工作状态…有自己的行为(功能),如空调的开机、关机、制冷、制热、摆风…⏹机器世界的对象:对象的状态用属性来维护(变量、字段)对象的行为用方法来实现(代码)对象是一组数据(属性)及对这组数据属性的一组操作(行为)构成的有标识的独立实体。
2. 类(Class)类是一组具有共同的属性特征和行为(服务)特征的对象的抽象。
(1)属性(Attribute)是描述对象静态特征的一个数据项。
(2)行为(Service)是描述对象动态特征的一个操作序列。
类与对象的关系:抽象与具体的关系。
类是产生对象的模板,而对象是类的一个实例。
3. 封装(encapsulation)是指通过类机制把对象的数据和对数据的操作(行为)封装在一起成为一个独立的系统单位。
4.2 类的定义4.1.1 类的定义形式Java程序由类构成,类由类头和类体组成,其一般形式为:[<修饰符>] class <类名>{ <每个字段的声明><每个方法的定义>}//类定义结束其中类的修饰符有2种:(1)访问控制符public、private或缺省来指定类的访问权限。
如:public class Object {....}(2)非访问控制符abstract、final分别用来声明抽象类和最终类。
JAVA程序设计教程第4章类和对象
要使用对象,首先必须构造它们,并指定它们的初始状态, 然后将方法应用于对象。
在Java程序设计语言中,使用构造函数(constructor)来构 造新的实例。一个构造函数是一个新的方法,它的作用是构造 并初始化对象。 构造函数是类的一种特殊方法,它的特殊性主要体现在如下的 几个方面: (1)构造方法的方法名与类的名称相同。 (2)构造方法没有返回类型。 (3)构造函数的主要作用是完成对类的对象的初始化工作。 (4)构造函数不能由编程人员显式地直接调用。 (5)在创建一个类的新对象的同时,系统会自动调用该类的 构造函数为新对象初始化。
但不能访问私有成员。
“friendly”(友好的)——若某样东西是“友
好的”,意味着它只能在这个包装的范围内使
用(所以这一访问级别有时也叫作“包装访
14
问”)。“
❖ 1.类头中应指出类实现那些接口,如未指出, 表示不实现任何接口
接口名跟在implements关键字后面,用来 说明当前类中实现了哪个接口定义的功能 和方法。接口是Java语言用来实现多重继 承的一种特殊机制,我们将在后面详细介
//职工工资
hireDay=new GregorianCalendar(year,month-1,day);//出勤数
}
//方法1
public String getName()
{
return name;
}
//更多的方法 ……
//属性的实例
private String name;
private double salary;
❖ 方法是类的主要组成部分。在一个类中,程序 的作用体现在方法中。方法是Java语言的基本构件。 利用方法可以组成结构良好的程序。本章介绍方法 的构成规则和设计、使用方法的基本要点。
Java程序设计实用教程(第2版)第4章_类 与 对 象
2019/8/2 9
§4.2.4 方法_ 1.方法声明
方法的定义包括两部分:方法声明和方法体。一 般格式为:
2019/8/2 6
§4.2.2 类体
◆ 类声明之后的一对大括号“{”,“}”以及它 们之间的内容称作类体,大括号之间的内容称作 类体的内容。 ◆类体的内容由两部分构:一部分是变量的声明, 用来刻画属性;另一部分是方法的定义,用来刻 画功能。
2019/8/2 7
例4-1 Vehicle .java
2019/8/2 31
§4.4.4 可变参数
可变参数是指在声明方法时不给出参数列表中从某项 直至最后一项参数的名字和个数,但这些参数的类型必 须相同。可变参数使用“…”表示若干个参数,这些参 数的类型必须相同,最后一个参数必须是参数列表中的 最后一个参数。例如: public void f(int … x) 那么, 方法f的参数列表中,从第1个至最后一个参数都是int 型,但连续出现的int型参数的个数不确定。称x是方法 f的参数列表中的可变参数的“参数代表”。
2019/8/2 29
§4.4.3 引用类型参数的传值
当参数是引用类型时,“传值”传递的是变 量中存放的“引用”,而不是变量所引用的实体。
2019/8/2 30
例4-5 TV.java ,Chineses.java , Example4_5.java
TV.java中的TV类负责创建“电视”对 象,Chinese.java中的Chinese类负责创 建“人物”对象。 在主类的main方法中首先使用TV类创 建一个对象:haierTV,然后使用 Chinese类再创建一个对象:zhangsan, 并将先前TV类的实例:haierTV的引用 传递给zhangsan对象的成员变量 homeTV。由于haierTV和zhangsan对 象的成员变量homeTV具有相同的引用, 因此其中一个TV对象改变了所引用的 实体,如更改了频道,那么另一个自然 也就更改了频道,程序运行效果如图 4.12所示。
JAVA2实用教程(第4版)答案 耿祥义 张跃平
1.属于操作题,解答略。 2.属于操作题,解答略。 3.属于操作题,解答略。 4.【代码 1】:4。【代码 2】:b[0]=1。 5.【代码 1】:40。【代码 2】:7 四、编写程序 1. public class E {
public static void main(String args[]) { System.out.println((int)'你'); System.out.println((int)'我'); System.out.println((int)'他');
}
习题五(第 5 章)
一、问答题 1.不可以。 2.是。 3.不继承。 4.声明与父类同名的成员变量。 5.子类重写的方法类型和父类的方法的类型一致或者是父类的方法的类型的子类型,重 写的方法的名字、参数个数、参数的类型和父类的方法完全相同。重写方法的目的是隐藏
继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。 6.不可以。 7.Abstract 类。 8.上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。上转型对象可 以访问子类继承或隐藏的成员变量,可以调用子类继承的方法或子类重写的实例方法。 9.通过重写方法。 10.面向抽象编程目的是为了应对用户需求的变化,核心是让类中每种可能的变化对应地 交给抽象类的一个子类类去负责,从而让该类的设计者不去关心具体实现。 二、选择题 1.C。2.D。3.CD。4.D。5.B。6.B。7.D。8.B。9.A。
} }
习题四(第 4 章)
一、问答题 1. 封装、继承和多态。 2.当类名由几个单词复合而成时,每个单词的首字母使用大写。
3.名字的首单词的首字母使用小写,如果变量的名字由多个单词组成,从第 2 个单词开 始的其它单词的首字母使用大写。 4.属性 5.行为 6.用类创建对象时。没有类型 7.用类创建对象时。 8.一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参 数的个数不同,或者是参数的类型不同。可以。 9.可以。不可以。 10.不可以。 11.一个类通过使用 new 运算符可以创建多个不同的对象,不同的对象的实例变量将被分 配不同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。 12.代表调用当前方法的对象。不可以。 二、选择题 1.B。2.D。3.D。4.D。5.CD。6.【代码 1】【代码 4】。7.【代码 4】。
JVVA第四章
如果在方法中对该参数指向的对象 进行了修改(例如,修改成员变量
的值),则这种修改将是永久的。
public class PassTest { float ptValue; // 参数类型是基本类型 public void changeInt(int value) { value = 55 ; Int value is:11 } …… public static void main(String args[ ] ) { String str; int val; // 创建PassTest的对象 PassTest pt= new PassTest( ); // 测试基本类型参数的传递,观察调用程序中的变量值是否改变 val = 11; pt.changeInt(val); System.out.println("Int value is: " +val);
different
value Hello str Str value is:Hello value变量已经被释放
…… // 参数类型是引用型,并且方法中改变了参数所指向 对象的成员变量值 public void changeObjValue( PassTest ref) { ref.ptValue = 99.0f; Pt value is:99.0 } …… // 测试引用类型参数的传递,观察调用程序中的变量 值是否改变 pt.ptValue = 101.0f ; pt.changeObjValue(pt); System.out.println("Pt value is: " +pt.ptValue);
this.z=c;
}
// 给类成员变量z赋值
String getXYZ( ) {
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时制格式时间: " +
java第4章PPT教学课件
2020/12/12
2020/12/12
3
图示:类与对象的关系
2020/12/12
4
4.2 面向对象软件开发的基本过程
1、面向对象的软件开发过程 2、面向对象的分析阶段 3、面向对象的设计阶段 4、实现阶段
2020/12/12
5
1、面向对象的软件开发过程ቤተ መጻሕፍቲ ባይዱ
用面向对象的方法来解决实际问题,是一个比较复 杂的过程,它包括面向对象的分析(OOA)、面向对象的 设计(OOD)和面向对象的编程(OOP)。
这些需求进行分析和筛选,与用户协商,去掉用户的需求中 的不合理元素,形成一个合理的方案。
需求分析的过程是一个复杂、烦琐、甚至艰难的过程, 通常需要反复讨论、协商和修改,才能达成最后的一致。需 求分析非常重要,如果做的不好, 会形成隐患和障碍,影响
整个开发工作。需求分析最后应形成书面的需求陈述。
2020/12/12
2020/12/12
2
2、什么是类
在Java程序中,类是创建对象的模板,对象是类的实例, 任何一个对象都是隶属于某个类的。
类是同种对象的集合与抽象。分类所依据的原则是抽象, 即抽象出能反映与当前目标有关的本质特征,而忽略那些与当 前目标无关的非本质特征,从而找出事物的共性,把具有共同 性质的事物归结为一类,得出一个抽象的概念——类。
6
图示
2020/12/12
《Java 2面向对象程序设计基础》第4章:类
/webnew/
4.2.1 类的定义
(2) 指出父类(extends部分 指出父类 部分) 部分
前面已提到,大多数的类都是从父类派生得到的,父类也称 为超类(SuperClass)。在类的属性中,用关键字extends和父类 名构成一个语素来说明这一点。这个语素放在类名和类体之 间,采用如下格式:
4.1.2 面向对象
面向对象的程序设计(Object Oriental Programming,OOP)思 想是最近十年发展起来的程序设计模式,其目标是将软件系 统待处理问题或者事务抽象为对象(Object),由于对象本身 具有一定的特征和行为,因此可以通过对象间的消息传递的 方式驱动对象的动作,进而实现软件系统的功能。
/webnew/
第4章 类
4.1 面向对象编程 4.2 类的描述 4.3 类的成员变量 4.4 类的成员方法 4.5 类的继承 4.6 this和super变量 和 变量 4.7 抽象类 4.8 内部类 4.9 Java程序的执行 程序的执行 4.10 课后练习
4 2 2 类的构造及其实例化
(2) 建立对象
一个对象必须配置相应的存储空间,才能产生功效。 但是,定义对象时,并没有为对象分配内存,所以, 要由建立对象这一步来为对象分配内存。建立对象 实际上是将一个类进行实例化,这是通过关键字 new来完成的。关键字new所对应的具体动作是调用 对应类中的构造方法来完成内存分配,然后将分配 的内存地址作为返回参数给所定义的对象。
class className { memberVariableDeclarations methodDeclarations }
/webnew/
4 2 2 及其实例化,下面分别 介绍。
1. 类的构造
Java程序设计实用教程(第2版)第4章_类 与 对 象
Vehicle.java
2017/8/16
§4.3 构造方法与对象的创建
类是面向对象语言中最重用的一种数据类型,那 么就可以用它来声明变量。在面向对象语言中,用类 声明的变量被称作对象。和基本数据类型不同,在用 类声明对象后,还必须要创建对象,即为声明的对象 分配变量 ( 确定对象所具有的属性 ) ,当使用一个类创 建一个对象时,也称给出了这个类的一个实例。通俗 的讲,类是创建对象的“模板”,没有类就没有对象。 构造方法和对象的创建密切相关 。
2017/8/16
3
§4.2
类Hale Waihona Puke 类是组成 Java 程序的基本要素。类封装了一 类对象的状态和方法。类是用来定义对象的模 板。 类的实现包括两部分:类声明和类体。基本 格式为:
class 类名 {
类体的内容
}
2017/8/16
4
§4.2.1 类声明
◆类声明 :class 类名 例如:
class Vehicle { …… }
2017/8/16
8
§4.2.4 方法_ 1.方法声明 方法的定义包括两部分:方法声明和方法体。一 般格式为:
方法声明部分 { 方法体的内容 }
1.方法声明 方法声明包括方法名和方法的返回类型,如:
double getSpeed() { return speed; } 注:方法的返回类型、方法的参数、方法的名字
2017/8/16 13
图4.1 Vehicle类的UML图
public class Vehicle { double speed; int power; void speedUp(int s) { speed=speed+s; } void speedDown(int d) { speed=speed-d; } void setPower(int p) { power=p; } int getPower() { return power; } double getSpeed() { return speed; } }
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 2实用教程第4版_第4章_类与对象
§4.2.2 类体
class Lader { float above; //梯形的上底(变量声明) “{”,“}”以及它们之间 float bottom; //梯形的下底(变量声明) 的内容称作类体,大括号之 float height; //梯形的高(变量声明) 间的内容称作类体的内容。 float area; //梯形的面积(变量声明) ◆类体的内容由两部分构: float computerArea() { //计算面积(方法) area = (above+bottom)*height/2.0f; 一部分是变量的声明,用来 return area; 刻画属性;另一部分是方法 } 的定义,用来刻画行为功能。 void setHeight(float h) { //修改高(方法) height = h; } } ◆ 类声明之后的一对大括号
§4.3 构造方法与对象的创建
类是面向对象语言中最重要的一种数据类型,那 么就可以用它来声明变量。在面向对象语言中,用类 声明的变量被称作对象。和基本数据类型不同,在用 类声明对象后,还必须要创建对象,即为声明的对象 分配变量(确定对象所具有的属性),当使用一个类创 建一个对象时,也称给出了这个类的一个实例。通俗 的讲,类是创建对象的“模板”,没有类就没有对象。 构造方法和对象的创建密切相关 。
java2实用教程第4版第4章类与对象类与对象主要内容????对象的组合???????类构造方法与对象的创建类与程序的基本结构参数传值对象的组合实例成员与类成员方法重载this关键字包import语句对象数组导读41编程语言的几个发展阶段4
注意:开始用功了!
《Java2实用教程(第4版)》 第4章
3.编程风格
(1)一行只声明一个变量。 (2)变量的名字符合标识符规定。 (3)变量名字见名知意,避免容易混淆的变量名字。
Java2实用教程第4版第4章类与对象精品PPT课件
} int add(int x,int y,int z) //有参数的方法头 { return x+y+z; } 根据程序的需要,方法返回的数据的类型可以是Java中的任何数据类型之一,当 一个方法不需要返回数据时,返回类型必须是void。参数是用逗号隔开的一些变量声明。 方法的参数可以是任意的Java数据类型。方法的名字必须符合标识符规定,在给方法命 名的习惯和给变量命名的习惯相同。
void f() { int m = 10,sum = 0; //成员变量,在整个类中有效 if(m>9) {
方法的参数在整个方法内有效,
int z = 10的局部变量从声明它的位置 之后开始有效。如果局部变量的声
z = 2*m+z; } for(int i=0;i<m;i++) {
基于对象的编程更加符合人的思维模式,使得编程人员更容易编写出易 维护、易扩展和易复用的程序代码,更重要的是,面向对象编程鼓励创造性 的程序设计。
面向对象编程主要体现下列三个特性 ◇封装性 ◇继承 ◇多态
第 1 页1 页1 页1 页1 页4 页
§4.2 类
类是Java语言中最重要的“数据类型”,类声明的变量被称 作对象(见后面的4.3节),即类是用来创建对象的模板。
以下是两个类声明的例子。 class People { … } class 植物 { … }
如:class People”和“class 植物”称作类声明;“People”和“动物”分别是 类名。
◆ 给类命名时,遵守下列编程风格(这不是语法要求的,但应当遵守): 1.如果类名使用拉丁字母,那么名字的首字母使用大写字母,如。 2.类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每
JAVA2实用教程-4
10
类的继承
继承
– 在面向对象语言中是一个很强的概念。 – 借助于继承,可以扩展原先单一用途的程序, 只作少 量修改而不必重新编写这些代码,就能使用到其他应 用程序中。大大节省软件开发时间。
Java中继承的实现
– 通过创建一个扩展其他类的新类 – 新类称为子类;原有的类称为超类(父类)。
注意: Java中一个类只能有一个超类
1
第四讲: Java面向对象的编程
本讲主要内容 – 控制对类和成员的访问 – 类的继承关系和类层次 – 运行中的多态 – 最终类、抽象类和内部类 – 关键字super – 接口定义和使用
上一页 下一页 退 出
复旦大学IBM技术中心
2
回顾
package(包)语句: 对类进行的分组存放 import(导入)语句:用来导入已有类 对象 对象具有:状态,行为 – 实体(实例): – 对象间的联系: 发送消息 面向对象的编程 – 三大特点:封装、继承、多态 – 类(对象的原型); 对象封装了变量和方法 – 方法: 成员方法、类方法; 方法重载 – 变量: 局部变量、成员变量和类变量; 作用域 – 构造方法的作用和定义 – 对象的建立、使用和消除
上一页 下一页 退 出
复旦大学IBM技术中心
5
public(共有变量和共有方法)
class Tom { public float weight; //weight被修饰为public的float型变量 class Tom public float f(float a,float b) //方法f是public方法 { { ... } float weight; //weight被修饰为public的float型 public ... 变量 } public float f(float a,float b) //方法f是public方法 { ... } class Jerry // 在此类进行引用 ... { } void g() { Tom cat=new Tom(); class Jerry // 在此类进行引用 { void g() cat.weight=23f; //合法 { Tom cat=new Tom(); 合法 cat.f(3,4);// cat.weight=23f; //合法 ... cat.f(3,4);//合法 } } ...
04类和对象2
4.7.1 创建子类
public class DogClass{ public class MammalClass{ public class CatClass{ String name,eyeColor; String name,eyeColor; String name,eyeColor; int age; int age; int age; boolean hasTail; public MammalClass(){ boolean isMale; public DogClass(){ name="The name"; public CatClass(){ name="Chase"; eyeColor="Black"; name="Jone"; eyeColor="Black"; age=0; eyeColor="Black"; age=2; } age=2; hasTail=true; } isMale=true; } } }
2011-11-5
14/36
4.7.2 成员变量的隐藏和方法的重写
例如下面的这段程序就是这样的情况: class SuperClass { //父类 int y; void setY(){ y=0; } } class SubClass extends SuperClass{ int y; // 父类变量y被隐藏 void setY(){ // 重写父类的方法setY() y=1; } }
2011-11-5 7/36
4.7.1 创建子类
【例4-1】 继承的简单例子 class Father{ //父类 //父类 private int money; float weight,height; String head; String speak(String s) { return s; } } class Son extends Father{ //子类 //子类 String hand ,foot; }
Java第2版第4章
3
4.1 语句与复合语句
语句可以是以分号“;”结尾的简单语句,也 语句可以是以分号“ 结尾的简单语句, 可以是用一对花括号“{}”括起来的复合语句 括起来的复合语句。 可以是用一对花括号“{}”括起来的复合语句。最 简单的语句是方法调用语句及赋值语句, 简单的语句是方法调用语句及赋值语句,是在方法 调用或赋值表达式后加一个分号(;), (;),分别表示 调用或赋值表达式后加一个分号(;),分别表示 完成相关的任务及赋值。 完成相关的任务及赋值。如: System.out.println(“Hello World”); x=a+8; y=x>0 ? x : -x; s=TextBox1.getText(); a=Integer.parseInt(s);
20
4.3.2 switch 选择语句
在多重条件选择的情况下,可以使用 ...else ...结构来实现 但是, 结构来实现, if ... else ... 结构来实现 , 但是 , 使用多分支开关语句会使程序更为精练、 使用多分支开关语句会使程序更为精练 、 清 晰 。 switch 语句就是多分支的开关语句 , 常 switch语句就是多分支的开关语句 语句就是多分支的开关语句, 用于多重条件选择。 用于多重条件选择。
22
switch多分支选择语句在执行时, switch 多分支选择语句在执行时,首先计算圆 多分支选择语句在执行时 括号中“表达式”的值, 括号中“表达式”的值,这个值必须是整型或字符 型的量,同时应与各个case case后面的常量表达式值的 型的量,同时应与各个case后面的常量表达式值的 类型相一致。计算出表达式的值后, 类型相一致。计算出表达式的值后,将它先与第一 case后面的 常量表达式1 的值相比较, 后面的“ 个 case 后面的 “ 常量表达式 1” 的值相比较 , 若相 则程序的流程转入第一个case分支的语句序列; case分支的语句序列 同,则程序的流程转入第一个case分支的语句序列; 否则,再将表达式的值与第二个case后面的“ case后面的 否则,再将表达式的值与第二个case后面的“常量 表达式2 相比较, 依此类推; 表达式 2” 相比较 , 依此类推 ; 如果表达式的值与 任何一个case后的常量表达式值都不相同, case后的常量表达式值都不相同 任何一个case后的常量表达式值都不相同,则转去 执行最后的default 分支的语句序列。 在每个case default分支的语句序列 执行最后的 default 分支的语句序列 。 在每个 case 语句后要用break 退出switch 结构, break退出 switch结构 语句后要用 break 退出 switch 结构 , 最后匹配的条 件语句后的break可以省略。 break可以省略 件语句后的break可以省略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§4.2.2 类体
class Lader { ◆ 类声明之后的一 float above; //梯形的上底(变量声明) 对大括号“{”,“}” float bottom; //梯形的下底(变量声明) float height; //梯形的高(变量声明) 以及它们之间的内 float area; //梯形的面积(变量声明) 容称作类体,大括 float computerArea() { //计算面积(方法) 号之间的内容称作 类体的内容。 area = (above+bottom)*height/2.0f; return area; ◆类体的内容由两 } 部分构成:一部分 void setHeight(float h) { //修改高(方法) 是变量的声明,用 height = h; 来刻画属性;另一 部分是方法的定义, } 用来刻画行为功能。 }
2015/10/12 第9 页
2.方法体 和类的成员变量不同的是,局部变量只在方法内有效, 方法声明之后的一对大括号“{” ,“}”以及之间的内容称为 而且与其声明的位置有关。 方法的方法体。 方法的参数在整个方法内有效,方法内的局部变量从声 明它的位置之后开始有效。如果局部变量的声明是在一个复 方法体的内容包括局部变量的声明和Java语句。 合语句中,那么该局部变量的有效范围是该复合语句,如果 在方法体内可以对成员变量和方法体中声明的局部变量进行 操作。在方法体中声明的变量和方法的参数被称作局部变量,如: 局部变量的声明是在一个循环语句中,那么该局部变量的有 int getSum(int n) { //参数变量n是局部变量 效范围是该循环语句。例如: int sum=0; // 声明局部变量sum public class A { for(int void f() { i=1;i<=n;i++) { // for循环语句 int m sum=sum+i; = 10,sum = 0; //成员变量,在整个类中有效 if(m>9) } int { z = 10; //z仅仅在该复合语句中有效 return sum; // return 语句 z = 2*m+z; } }
2015/10/12 第 17 页
3.对象的内存模型
(1)声明对象时的内存模型
(2)对象分配变量后的内存模型
(3)创建多个不同的对象
一个类通过使用 new 运算符可以创建多个不同 的 对 象 , 创 建 两 个 对 象 : zhubajie、 sunwukong
zhubajie = new XiyoujiRenwu(); sunwukong = new XiyoujiRenwu();
2015/10/12
int x = 5; y = x+this.x; 值是15 } }
//y得到的
第 11 页
4.局部变量没有默认值
成员变量有默认值(见后面的4.3节),但局部 变量没有默认值,因此在使用局部变量之前, 必须保证局部变量有具体的值 。例如:下列 InitError类无法通过编译 class InitError { int x = 10,y; //y的默认值是0 void f() { int m; //m没有默认值,但编译无错误 x = y+m; //无法通过编译,因为在使用m之 前未指定m的值 } }
2015/10/12
第 13 页
§4.2.6 类的UML图 UML(Unified Modeling Language Diagram) 图属于 结构图,常被用于描述一个系统的静态结构。一个UML 中通常包含有类 (Class) 的 UML 图,接口 (Interface) 的 UML 图以及泛化关系 (Generalization) 的 UML 图、关联 关系 (Association) 的 UML 图、依赖关系 (Dependency) 的UML图和实现关系(Realization)的UML图。 在类的UML图中,使用一个长方形描述一个类的主要构 成,将长方形垂直地分为三层。 第1层是名字层; 第2层是变量层,也称属性层; 第3层是方法层,也称操作层。
2015/10/12 第 15 页
§4.3.1 构造方法 构造方法是一种特殊方法,它的名字必须与它所 在的类的名字完全相同,而且没有类型。 允许一个类中编写若干个构造方法,但必须保证 他们的参数不同,即参数的个数不同,或者是参数的 类型不同。 需要注意的是如果类中没有编写构造方法,系统会 默认该类只有一个构造方法,该默认的构造方法是无 参数的,且方法体中没有语句。 1 如果类里定义了一个或多个构造方法,那么 Java 不提供默认的构造方法 。 2 需要特别注意的是,构造方法没有类型 。
2015/10/12 第4 页
§4.2
类
类是Java语言中最重要的“数据类型”,类声明的变量被 称作对象(见后面的 4.3 节),即类是用来创建对象的模板。
类的实现包括两部分:类声明和类体。基本格式为:
class 类名 { 类体的内容 } class是关键字,用来定义类。“class 类名”是类的 声明部分,类名必须是合法的Java标识符。两个大括 号以及之间的内容是类体。
for(int i=0;i<m;i++) { sum = sum+i; //i仅仅在该循环语句中有效 } m = sum; //合法,因为m和sum有效 z = i+sum; //非法,因为i和z已无效
} }
2015/10/12 第 10 页
3.区分成员变量和局部变量
如果局部变量的名字与成员变量的名字相同,则成员变 量被隐藏,即该成员变量在这个方法内暂时失效。例如: class Tom { int x = 10,y; void f() { int x = 5; y = x+x; //y得到的值是10,不是20。如果方法f 中 没有“int x=5;”,y的值将是20 class Tom { } int x = 10,y; } void f() { 如果想在该方法中使用 被隐藏的成员变量,必 须使用关键字this(在 4.9节this关键字)
注意:开始用功了!
2015/10/12
第1 页
《Java2实用教程(第4版)》 第4章
类与对象
配合例子源代码一起使用
2015/10/12
第2 页
导读
主要内容
2015/10/12
类 构造方法与对象的创建 类与程序的基本结构 参数传值 对象的组合 实例成员与类成员 方法重载 this关键字 包 import语句 对象数组
2015/10/12 第 14 页
§4.3 构造方法与对象的创建
类是面向对象语言中最重要的一种数据类 型,那么就可以用它来声明变量。在面向对 象语言中,用类声明的变量被称作对象。和 基本数据类型不同,在用类声明对象后,还 必须要创建对象,即为声明的对象分配变量 ( 确定对象所具有的属性 ) ,当使用一个类创 建一个对象时,也称给出了这个类的一个实 例。通俗的讲,类是创建对象的“模板”, 没有类就没有对象。构造方法和对象的创建 密切相关 。
2015/10/12 第8 页
§4.2.4 方法
方法的定义包括两部分:方法声明和方法体。一般格式为: 方法声明部分 {
方法体的内容
} 1.方法头 方法头由方法的类型、名称和名称之后的一对小括号以及其中的参数列表 所构成。无参数方法定义的方法头中没有参数列表,即方法名称之后一对小括 号中无任何内容,例如: int speak(){ //无参数的方法头 return 23; } int add(int x,int y,int z) // 有参数的方法头 { return x+y+z; } 根据程序的需要,方法返回的数据的类型可以是 Java 中的任何数据类型 之一,当一个方法不需要返回数据时,返回类型必须是void。参数是用逗号隔 开的一些变量声明。方法的参数可以是任意的Java数据类型。方法的名字必须 符合标识符规定,在给方法命名的习惯和给变量命名的习惯相同。
2015/10/12 第 16 页
§4.3.2 创建对象
创建一个对象包括对象的声明和为对象分配变量两个步 骤。 1.对象的声明 一般格式为: class XiyoujiRenwu { 类的名字 对象名字; 如:height,weight; Lader lader; float String XiyoujiRenwu head, ear; zhubajie; speak(String s) { 2void .为声明的对象分配变量 System.out.println(s); 使用 new 运算符和类的构造方法为声明的对象分配变量, } 即创建对象。如果类中没有构造方法,系统会调用默认的构造 } 方法,默认的构造方法是无参数的,且方法体中没有语句。 例 public class Example4_1 { 如: zhubajie = new XiyoujiRenwu(); public static void main(String args[]) { 以下是两个详细的例子。例子 1 // 例子 2 XiyoujiRenwu zhubajie; 声明对象 zhubajie = new XiyoujiRenwu(); //为对象分配变量(使 用new和默认的构造方法) } }
2015/10/12 第 12 页
§4.2.5 需要注意的问题 类体的内容由两部分构成:一部分是变量的
声明,另一部分是方法的定义。 对成员变量的操作只能放在方法中,方 法可以对成员变量和该方法体中声明的局部 变量进行操作。在声明成员变量时可以同时 赋予初值,但是不可以在类体中有单独的赋 值语句(不可以有变量的声明和方法的定义 以外的其它语句)。
ቤተ መጻሕፍቲ ባይዱ
2015/10/12
第5 页
§4.2.1 类声明