java第三章面向对象技术

上传人:shaoy****1971 文档编号:114116306 上传时间:2019-11-10 格式:PPT 页数:87 大小:354.05KB
返回 下载 相关 举报
java第三章面向对象技术_第1页
第1页 / 共87页
java第三章面向对象技术_第2页
第2页 / 共87页
java第三章面向对象技术_第3页
第3页 / 共87页
java第三章面向对象技术_第4页
第4页 / 共87页
java第三章面向对象技术_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《java第三章面向对象技术》由会员分享,可在线阅读,更多相关《java第三章面向对象技术(87页珍藏版)》请在金锄头文库上搜索。

1、Java程序设计,面向对象技术,内容,类和对象 类的创建 对象的创建 类的封装 类的继承 类的多态性 数组 字符串,3.1 类和对象,类是一个模型,它定义了一类对象的共同特征和行为;对象是类的一个实例。 类的组成: 成员变量:类内用于存储对象各项数据的变量,它们反映对象的状态,也称为属性 ; 成员方法:描述对成员变量的操作。 同一个类的不同对象可具有不同的状态,而对象中的方法用于改变自身的状态;,3.2.1 类定义,使用一个类之前必须先定义一个类 类定义的组成部分:类声明、类体 类定义的格式: 类修饰符 class 类名 extends 父类名 implents 接口名 类体,3.2.2 类体

2、,类体中定义了该类的所有成员变量和方法,这些成员变量和方法称为类的成员。,class 类名 成员变量; 成员方法; ,class Point int x, y; void init(int ix, int iy) x=ix; y=iy; ,3.2.2.1 成员变量的声明,格式: 修饰符 类型 变量名 =初值;,修饰符:说明成员变量的访问权限 类型:成员变量的类型 变量名:Java合法标识符 声明时可以给出变量的初始值 可同时声明多个成员变量(不推荐) public int a=1, b=2; public int a=1; public int b=2;,public class Stack

3、private int items; public int items() . . . ,3.2.2.2 成员函数的声明,格式 修饰符 返回值类型 函数名( 参数表) 函数体,成员函数的声明必须放在class内 必须给出函数的返回类型,若无返 回值类型为void,public class Stack private int items; public int items() . . . ,3.3.1 对象的创建声明,对象的声明 格式:类型(class/interface名, ) 对象名; String s; 对象的声明并不为对象分配内存,对象的初始值为null;此时不能访问对象的成员。,cla

4、ss Num int i; Num m; m.i=0; ,3.3.1 对象的创建实例化,使用关键字new创建一个对象,并返回对象的引用(相当于对象在内存中的地址); 可以在声明对象的同时创建对象; 每一个对象拥有其成员的单独拷贝;,Num m=new Num(); Num n=new Num(); m.i=10; n.i=100;,Num m; m=new Num(); m.i=10;,class Num int i; ,class SimplePoint int x; int y; public class TwoSimplePoint public static void main(Str

5、ing args) SimplePoint p1 = new SimplePoint(); SimplePoint p2 = new SimplePoint(); p1.x = 10; p1.y = 20; p2.x = 100; p2.y = 200; System.out.println(“p1=“ + p1.x + “,“ + p1.y); System.out.println(“p2=“ + p2.x + “,“ + p2.y); ,0xFCA0,0xFC00,p1,p2,对象1,对象2,内存,内存,3.3.2 构造函数,构造方法的特征 构造方法的名称与类的名称相同 构造方法没有返回值

6、(不同于void返回值) 可以有多个构造方法,但每个构造方法的参数个数或类型需不同 构造方法的作用 创建对象:对象的创建通过调用对象的构造方法实现; 初始化对象:在构造方法添加初始化成员变量的代码,从而实现对成员变量的初始化(即,对象的初始化)。 注意:Java中可以不定义构造方法,此时系统会自动为该系统生成一个默认的构造方法。这个构造方法的名字与类名相同,它没有任何形式参数,并将成员变量初始化为默认值(数值类型为0或0.0,boolean类型为false,复合数据类型为null),构造函数示例,NewPointTest.java,3.3.3 对象的使用,访问成员变量 对象名.成员变量名 调用

7、成员方法 对象名.成员方法名,NewPoint p2=new NewPoint(10); p2.x=10;,NewPoint p3=new NewPoint(100,200); p3.printLoc();,3.3.4 对象的销毁,Java的垃圾回收机制 当没有任何引用能指向一个对象时,这个对象将被JVM释放。(示例:NoReference.java) void finalize() (教材P73页错误) JVM在释放一个对象之前,将调用该对象的finallize方法,因此可以在该方法中进行特定地清除操作。,3.3.5 再谈变量 实例变量和局部变量,实例变量: 定义在类体之内, 方法体之外的变

8、量. 局部变量: 定义在方法体之内的变量以及方法的参数(形参). 唯一性: 在同一作用域中不能定义两个同名局部变量; 在同一个类中不能定义两个同名的实例变量; 但在一个类中可以定义与实例变量同名的局部变量,此时在该局部变量的作用域内,此局部变量将隐藏同名的实例变量.,实例变量和局部变量的唯一性示例(1) 实例变量和局部变量的唯一性示例(2) TestInstanceVar.java,public class InstanceAndLocal int x,y,z; /double x; void init(int x,int y) int z=0; /*for(int x=0,y=0,z=0;z

9、5;z+) x+; y+; */ ,初始化 局部变量在使用前必须初始化; 实例变量可以不显式地初始化, 此时Java编译器会将实例变量初始化为默认值 数值类型的实例变量(byte short int long char float double)初始化为0(或0.0); boolean类型的实例变量初始化为false; 复杂数据类型的实例变量(用类作为数据类型定义的实例变量)初始化为null. 实例变量可以在定义时直接初始化, 也可以在构造函数中初始化;,实例变量和局部变量初始化示例(1),public class InitVar int i; double d; boolean b; Str

10、ing s; /* void noInit() int n; n+; */ public static void main(String args) InitVar obj = new InitVar(); System.out.println(“i=“ + obj.i); System.out.println(“d=“ + obj.d); System.out.println(“b=“ + obj.b); System.out.println(“s=“ + obj.s); ,实例变量和局部变量初始化示例(2),public class InitInstanceVar int i=10; in

11、t j; int k=10; InitInstanceVar() j=10; k=20; public static void main(String args) InitInstanceVar obj=new InitInstanceVar(); System.out.println(“i=“+obj.i); System.out.println(“j=“+obj.j); System.out.println(“k=“+obj.k); ,生命期 局部变量的生命期从定义之处开始, 到该变量定义所在代码块结束而结束; 实例变量属于对象, 它随着对象的存在而存在, 随着对象的消亡而消亡; 对象什么

12、时候诞生? 当用new调用一个类的构造函数时,该类的一个对象被创建(诞生); 对象什么时候消亡? 当没有引用能够指向一个对象时,该对象将被”垃圾回收” (消亡).,实例变量和局部变量生命期示例,public class VarLiving int i; public static void main(String args) VarLiving obj=new VarLiving(); for( int j=0;j10;j+) System.out.println(“j=“+j); /System.out.println(“j=“+j); System.out.println(“i=“+obj

13、.i); obj=null; /System.out.println(“i=“+obj.i); ,3.3.6 引用变量和赋值(1),变量类型为简单数据类型 赋值是传递数值的拷贝,int i = 1; int j = i; i = 2; System.out.println(“i = “ + i); System.out.println(“j = “ + j);,1,i,1,j,2,i,3.3.6 引用变量和赋值(2),变量类型为复合数据类型(类) 赋值是传递对象的引用,SimplePoint p1 = new SimplePoint(); p1.x = 10; p1.y = 20; Simpl

14、ePoint p2 = p1; p2.x = 100; p2.y = 200; System.out.println( p1.x+”,”+p1.y);,class SimplePoint int x; int y; ,0xFCA0,p1,3.3.7 向方法传递参数,方法参数的传递 传值:基本数据类型 传值调用不会改变所传参数的值; 传引用:对象、数组 传引用调用可改变所传对象的内容; 示例:PassingParam.java 输出结果:,x=100 y=200 value = 10 i = 0,3.3.8 返回对象,对于对象,与向方法传递参数类似,方法返回的是对象的引用; 当一个方法返回对象时

15、,对象将一直存在直到没有对它的引用为止,此时该对象将被回收。因此一个对象不会因为创建它的方法终止而被销毁。 示例:TestReturnObj.java,3.4 封装,面向对象技术的特性 封装 继承 多态性 封装:将属性和方法装配到类中,并加以访问控制 隐藏类的实现细节 迫使类的使用者通过接口访问类内的数据 减少类与类间的耦合性,增强代码的可维护性,3.4.1 访问控制,Java推出了“访问控制修饰符”的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的。4种访问级别: public:共有的 缺省访问控制 private:私有的 protected:保护的 两种修饰位置:修饰

16、类和修饰成员,3.4.2 public修饰符修饰类,一个类被声明为public类,表明它可以被所有的其他类所访问和引用,这里的访问和引用是指这个类作为整体是可见和可使用的,程序的其他部分可以创建这个类的对象、访问这个类内部可见的成员变量和调用它的可见的方法。 一个类作为整体对程序的其他部分可见,并不能代表类内的所有属性和方法也同时对程序的其他部分可见,前者只是后者的必要条件,类的属性和方法能否为所有其他类所访问,还要看这些属性和方法自己的访问控制符。 一个Java文件中可以有多个类,但只能有一个被修饰为public,如果java文件中有public类,该文件的名字必须和该public类同名。,3.4.3 public修饰符修饰成员,被public修饰符修饰的成员为公共的,所有class中均可访问该成员。,public class Alpha

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号