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