Java基础教程(第3章)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当程序执行时,类代码被加载时,就会给类变量分 配空间,而实例变量要在创建实例后才分配空间
类变量通过类名可直接引用,实例变量要通过创 建实例后的实例名来引用,不能通过类名直接引 用
Circle cl1=new Circle(3); System. out .println( cl1 .r );
[throws exceptionList] { statements
}
方法体
1.方法声明
方法声明包括方法名、返回类型和形式参 数。参数的类型可以是简单数据类型,也 可以是复合数据类型(又称引用数据类 型)。
2.方法体
方法体是对方法的实现,它包括局部变量的声 明以及所有合法的Java 指令。
基本思想是使用对象、类、继承、封装、 消息等基本概念来进行程序设计。 从现实世界中客观存在的事物(即对象) 出发来构造软件系统,并且在系统构造中 尽可能运用人类的自然思维方式。
1.对象的基本概念
对象是系统中用来描述客观事物的一个实 体,它是构成系统的一个基本单位。一个 对象由一组属性和对这组属性进行操作的 一组服务组成。
命名上:都要符合标示符命名规范
两者的不同之处
初始化方式不同
ppuubblliicc ccllaassss CCiirrccllee{{ ppuubblliicc idnot ur;ble getArea( ) { pubdloicubdloeuabrleeag=e3t.A14re*ra*(r); {
类与对象的关系就如模具和铸件的关系, 类的实例化结果就是对象,而对一类对象 的抽象就是类。
3.消息
消息就是向对象发出的服务请求 消息包含下述信息:提供服务的对象标识、
服务标识、输入信息和回答信息。 服务通常被称为方法或函数。
3.1.2面向对象的基本特征
1.封装性:就是把对象的属性和服务结合成一个 独立的单位,并尽可能隐蔽对象的内部细节
注意2:参数类型的区分度一定要足够,例如
判不能断是你同调一用简的单是类型哪的个参方数法,。如int与long。
class MethodOverloading { void receive(int i) {
P65 例3-3】
System.out.println("Receive one int data");
类体
<member method declarations>
}
3.2.2 类声明
Jav访a中问修类饰声符明的语法如下:
类名
[public][abstract|final] class className
[extends superclassName] [implements
interfaceNameList]
方法体中声明的局部变量的作用域在该方法内 部。
方法声明部分有static则此方法为类方法(静态 方法),无static的为实例方法
实例方法和类方法的区别
当类加载到内存时,实例方法不会被分配入口地 址,当创建对象后,类中的实例方法才分配入口 地址。所以其只能通过对象名引用,且方法定义 中,既可以使用实例变量也可以使用类变量。
public static void main(String args[]) {
MethodOverloading mo = new MethodOverloading();
mo.receive(1);
mo.receive(2, 3);
}
}
方法的参数传递
对于简单数据类型来说,Java 实现的是 值传递,对于复合数据类型(引用型)在 值传递中传递的是引用地址,方法中对引 用地址所指向的数据的操作可以改变数据 的值。
类方法在类加载到内存时,就分配了相应的入口 地M址at。h.m所a以x(其10既,7)可;//以通通过过类类名名直直接接调调用用,也可以 通St过rin对g s象=名ne调w用Str。in在g(在“方He法llo定”义);中,只能使用类 变In量t le,n=不s能.le使ng用th实();例//通变过量实。例名调用
思考题: 什么时候把变量定义为局部变量? 什么时候定义为成员变量?
public static void main(String args[ ]) {
Circle c1=new Circle(); c1.setR(5);
System.out.println( c1.getArea( ) ); }
}
成员变量的声明方式如下:
生命周期不同 使用范围不同
dreotuubrnleaarreeaa;=3.14*r*r; } return area; p}ublic int r;
对外部的可见性不同 ppuubblilcicsstatatitcicvvooididmmaainin( (S) t{ring a[]) {
CCiirrccllee cc11==nneeww CCiirrccllee((););
一个类若是多个一般类的特殊类,则它持单能继从承多 个一般类中继承属性与服务,称为多继承。
在Java 语言中,称一般类为父类(superclass, 超类),特殊类为子类(subclass)。
3.多态性 对象的多态性是指在父类中定义的属性或
服务被子类继承之后,可以具有不同的数 据类型或表现出不同的行为。 这使得同一个属性或服务在父类及其各个 子类中具有不同的语义。
returnType mumbermethod ([paramList]){
statements
}
}
成员方法的定义
3.2.4 成员变量和局部变量
public class Circle{
类体中方法体之外定
public int r;
义——成员变量
public double getArea( ) {
wenku.baidu.com
double area=3.14 * r * r; return area; }
public class Circle{ private int r; public static double PI=3.14; ……
}
实例变量和类变量的区别
不同对象的实例变量将被分配不同的内存空间, 而类变量,对所有对象的这个类变量都分配给相 同的内存空间,改变其中一个对象的这个类变量 会影响其它对象读取的值,即同类对象共享类变 量。
3.1.3 面向对象程序设计方法
面向对象程序设计方法可分为 面向对象的分析(OOA,Object Oriented Analysis) 面向对象的设计(OOD,Object Oriented Design) 面向对象的实现(OOI,Object Oriented Implementation)
3.2.6 方法重载
方法重载是指在一个类中以同一个名字定义多个 方法,每个方法的参数必须不同,或者是参数的 个数不同,或者是参数类型不同。
方注意法1的:名方法字返与回所值属的类类型型以及参数的顺序构成了方 法不能签用名来(区s分ig重n载at的ur方e)法 ,在类中每个方法的签名 必须是不完全一样的,这样才能使编译器准确地
如何引用被隐藏的成员变量呢?
return area; }
this.变量名 —— 成员变量
public static void main(String args[ ] ) { this ——表示当前对象的应用
Circle c1=new Circle( );
如:this.成员变量
System.out.println( c1.getArea(5) ); this.成员方法
含义:
把对象的全部属性和全部服务结合成一个独立单位。 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成
一个边界,只保留有限的对外接口与外部发生联系。
好处:有效的避免了外部错误对它的“交叉感 染”,使软件错误能够局部化,大大减少查错 和排错的难度。
2.继承性
特殊类的对象拥有某个一般类的部分属性与服 务,称作特殊类对一般类的继承。 Java只支
{
继承于父类
实现的接口列表
……
}
给类命名时,最好遵守下列习惯。
1)类名应该是名词,大小写可混用,但首字 母应大写 ,如Time、People等。
2)类名最好见名识义
类体
Java中类体定义的语法如下: class className{
成员变量的定义
type mumberVariable;
System.out.println("i=" + i);
}
void receive(int x, int y) {
System.out.println("Receive two int datas");
System.out.println("x=" + x + " y=" + y);
}
}
public class MethodOverloadingTest {
Java程序设计基础教程
第三章 类和对象
第3章 类和对象
面向对象技术基础 类的概念、定义与使用 对象的生成、使用、清除 static关键字 this关键字 final关键字 Java类中的限定词 包和import语句
3.1面向对象技术基础
3.1.1面向对象的基本概念 面向对象是一种新兴的程序设计方法。其
客观世界是由对象和对象之间的联系组成 主动对象是一组属性和一组服务的封装体,
其中至少有一个服务不需要接收消息就能 主动执行(称作主动服务)。
2.类的基本概念
把众多的事物归纳、分类是人类在认识客 观世界时经常采用的思维方法。
类是具有相同属性和服务的一组对象的集 合,它为属于该类的所有对象提供了统一 的抽象描述,其内部包括属性和服务两个 主要部分。
cc11..rr==55;;
SSyysstteemm..oouutt..pprriinnttllnn((cc11..ggeettAArreeaa(())));;
}}
}}
public class Circle{ public int r;
当局部变量和成员变量同名时, 成员变量被隐藏,
public double getArea ( int r ) { double area=3.14*r*r;
方法体内或参数列表中 定义——局部变量
public static void main( String args[ ]) {
Circle c1=new Circle( );
c1.r =5;
System.out.println( c1.getArea( ) );
}
}
两者的相同之处
类型上:可以是任意一种数据类型
}
}
public class Circle{ private int r; public void setR ( int r ){
程序填空: 求半径为5的圆的面积
this.r = r; }
若没有第三个空的语句,输出 的结果是多少?
public double getArea ( ) {
double area= 3.14*r*r; return area; }
3.2 类的定义与使用
类是组成Java程序的基本要素,是Java 中的一 种重要的复合数据类型。它封装了一类对象的 属性和方法,是这一类对象的原形。
一个类的实现包括两个部分:类声明和类体。 基本格式为:
class <class name>
类声明
{
<member field declarations>
类成员变量 实例成员变量
3.2.5 成员方法
方法的定义包方括法首两名字部应母该分应是小内动写容词, 一般格式为:
方法声明
[public | protected | private ] [static] [final | abstract] [native] [synchronized] returnType methodName([paramList])
访问控制符
静态变量
[p常u量blic | protected | private ] [static] [final] type variableName;
注意:变量可大小写混用,但首字符应小写。限制
用下划线和美元符号($),因为这个字符对内部类 有特殊的含义
2.成员变量的分类
成员变量又分为实例成员变量(简称实例变量) 和类变量(也称静态变量),如果成员变量的 类型前面加上关键字static,这样的成员变量称 为类变量或静态变量。
类变量通过类名可直接引用,实例变量要通过创 建实例后的实例名来引用,不能通过类名直接引 用
Circle cl1=new Circle(3); System. out .println( cl1 .r );
[throws exceptionList] { statements
}
方法体
1.方法声明
方法声明包括方法名、返回类型和形式参 数。参数的类型可以是简单数据类型,也 可以是复合数据类型(又称引用数据类 型)。
2.方法体
方法体是对方法的实现,它包括局部变量的声 明以及所有合法的Java 指令。
基本思想是使用对象、类、继承、封装、 消息等基本概念来进行程序设计。 从现实世界中客观存在的事物(即对象) 出发来构造软件系统,并且在系统构造中 尽可能运用人类的自然思维方式。
1.对象的基本概念
对象是系统中用来描述客观事物的一个实 体,它是构成系统的一个基本单位。一个 对象由一组属性和对这组属性进行操作的 一组服务组成。
命名上:都要符合标示符命名规范
两者的不同之处
初始化方式不同
ppuubblliicc ccllaassss CCiirrccllee{{ ppuubblliicc idnot ur;ble getArea( ) { pubdloicubdloeuabrleeag=e3t.A14re*ra*(r); {
类与对象的关系就如模具和铸件的关系, 类的实例化结果就是对象,而对一类对象 的抽象就是类。
3.消息
消息就是向对象发出的服务请求 消息包含下述信息:提供服务的对象标识、
服务标识、输入信息和回答信息。 服务通常被称为方法或函数。
3.1.2面向对象的基本特征
1.封装性:就是把对象的属性和服务结合成一个 独立的单位,并尽可能隐蔽对象的内部细节
注意2:参数类型的区分度一定要足够,例如
判不能断是你同调一用简的单是类型哪的个参方数法,。如int与long。
class MethodOverloading { void receive(int i) {
P65 例3-3】
System.out.println("Receive one int data");
类体
<member method declarations>
}
3.2.2 类声明
Jav访a中问修类饰声符明的语法如下:
类名
[public][abstract|final] class className
[extends superclassName] [implements
interfaceNameList]
方法体中声明的局部变量的作用域在该方法内 部。
方法声明部分有static则此方法为类方法(静态 方法),无static的为实例方法
实例方法和类方法的区别
当类加载到内存时,实例方法不会被分配入口地 址,当创建对象后,类中的实例方法才分配入口 地址。所以其只能通过对象名引用,且方法定义 中,既可以使用实例变量也可以使用类变量。
public static void main(String args[]) {
MethodOverloading mo = new MethodOverloading();
mo.receive(1);
mo.receive(2, 3);
}
}
方法的参数传递
对于简单数据类型来说,Java 实现的是 值传递,对于复合数据类型(引用型)在 值传递中传递的是引用地址,方法中对引 用地址所指向的数据的操作可以改变数据 的值。
类方法在类加载到内存时,就分配了相应的入口 地M址at。h.m所a以x(其10既,7)可;//以通通过过类类名名直直接接调调用用,也可以 通St过rin对g s象=名ne调w用Str。in在g(在“方He法llo定”义);中,只能使用类 变In量t le,n=不s能.le使ng用th实();例//通变过量实。例名调用
思考题: 什么时候把变量定义为局部变量? 什么时候定义为成员变量?
public static void main(String args[ ]) {
Circle c1=new Circle(); c1.setR(5);
System.out.println( c1.getArea( ) ); }
}
成员变量的声明方式如下:
生命周期不同 使用范围不同
dreotuubrnleaarreeaa;=3.14*r*r; } return area; p}ublic int r;
对外部的可见性不同 ppuubblilcicsstatatitcicvvooididmmaainin( (S) t{ring a[]) {
CCiirrccllee cc11==nneeww CCiirrccllee((););
一个类若是多个一般类的特殊类,则它持单能继从承多 个一般类中继承属性与服务,称为多继承。
在Java 语言中,称一般类为父类(superclass, 超类),特殊类为子类(subclass)。
3.多态性 对象的多态性是指在父类中定义的属性或
服务被子类继承之后,可以具有不同的数 据类型或表现出不同的行为。 这使得同一个属性或服务在父类及其各个 子类中具有不同的语义。
returnType mumbermethod ([paramList]){
statements
}
}
成员方法的定义
3.2.4 成员变量和局部变量
public class Circle{
类体中方法体之外定
public int r;
义——成员变量
public double getArea( ) {
wenku.baidu.com
double area=3.14 * r * r; return area; }
public class Circle{ private int r; public static double PI=3.14; ……
}
实例变量和类变量的区别
不同对象的实例变量将被分配不同的内存空间, 而类变量,对所有对象的这个类变量都分配给相 同的内存空间,改变其中一个对象的这个类变量 会影响其它对象读取的值,即同类对象共享类变 量。
3.1.3 面向对象程序设计方法
面向对象程序设计方法可分为 面向对象的分析(OOA,Object Oriented Analysis) 面向对象的设计(OOD,Object Oriented Design) 面向对象的实现(OOI,Object Oriented Implementation)
3.2.6 方法重载
方法重载是指在一个类中以同一个名字定义多个 方法,每个方法的参数必须不同,或者是参数的 个数不同,或者是参数类型不同。
方注意法1的:名方法字返与回所值属的类类型型以及参数的顺序构成了方 法不能签用名来(区s分ig重n载at的ur方e)法 ,在类中每个方法的签名 必须是不完全一样的,这样才能使编译器准确地
如何引用被隐藏的成员变量呢?
return area; }
this.变量名 —— 成员变量
public static void main(String args[ ] ) { this ——表示当前对象的应用
Circle c1=new Circle( );
如:this.成员变量
System.out.println( c1.getArea(5) ); this.成员方法
含义:
把对象的全部属性和全部服务结合成一个独立单位。 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成
一个边界,只保留有限的对外接口与外部发生联系。
好处:有效的避免了外部错误对它的“交叉感 染”,使软件错误能够局部化,大大减少查错 和排错的难度。
2.继承性
特殊类的对象拥有某个一般类的部分属性与服 务,称作特殊类对一般类的继承。 Java只支
{
继承于父类
实现的接口列表
……
}
给类命名时,最好遵守下列习惯。
1)类名应该是名词,大小写可混用,但首字 母应大写 ,如Time、People等。
2)类名最好见名识义
类体
Java中类体定义的语法如下: class className{
成员变量的定义
type mumberVariable;
System.out.println("i=" + i);
}
void receive(int x, int y) {
System.out.println("Receive two int datas");
System.out.println("x=" + x + " y=" + y);
}
}
public class MethodOverloadingTest {
Java程序设计基础教程
第三章 类和对象
第3章 类和对象
面向对象技术基础 类的概念、定义与使用 对象的生成、使用、清除 static关键字 this关键字 final关键字 Java类中的限定词 包和import语句
3.1面向对象技术基础
3.1.1面向对象的基本概念 面向对象是一种新兴的程序设计方法。其
客观世界是由对象和对象之间的联系组成 主动对象是一组属性和一组服务的封装体,
其中至少有一个服务不需要接收消息就能 主动执行(称作主动服务)。
2.类的基本概念
把众多的事物归纳、分类是人类在认识客 观世界时经常采用的思维方法。
类是具有相同属性和服务的一组对象的集 合,它为属于该类的所有对象提供了统一 的抽象描述,其内部包括属性和服务两个 主要部分。
cc11..rr==55;;
SSyysstteemm..oouutt..pprriinnttllnn((cc11..ggeettAArreeaa(())));;
}}
}}
public class Circle{ public int r;
当局部变量和成员变量同名时, 成员变量被隐藏,
public double getArea ( int r ) { double area=3.14*r*r;
方法体内或参数列表中 定义——局部变量
public static void main( String args[ ]) {
Circle c1=new Circle( );
c1.r =5;
System.out.println( c1.getArea( ) );
}
}
两者的相同之处
类型上:可以是任意一种数据类型
}
}
public class Circle{ private int r; public void setR ( int r ){
程序填空: 求半径为5的圆的面积
this.r = r; }
若没有第三个空的语句,输出 的结果是多少?
public double getArea ( ) {
double area= 3.14*r*r; return area; }
3.2 类的定义与使用
类是组成Java程序的基本要素,是Java 中的一 种重要的复合数据类型。它封装了一类对象的 属性和方法,是这一类对象的原形。
一个类的实现包括两个部分:类声明和类体。 基本格式为:
class <class name>
类声明
{
<member field declarations>
类成员变量 实例成员变量
3.2.5 成员方法
方法的定义包方括法首两名字部应母该分应是小内动写容词, 一般格式为:
方法声明
[public | protected | private ] [static] [final | abstract] [native] [synchronized] returnType methodName([paramList])
访问控制符
静态变量
[p常u量blic | protected | private ] [static] [final] type variableName;
注意:变量可大小写混用,但首字符应小写。限制
用下划线和美元符号($),因为这个字符对内部类 有特殊的含义
2.成员变量的分类
成员变量又分为实例成员变量(简称实例变量) 和类变量(也称静态变量),如果成员变量的 类型前面加上关键字static,这样的成员变量称 为类变量或静态变量。