Java面向对象.ppt
《Java面向对象.ppt》由会员分享,可在线阅读,更多相关《Java面向对象.ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、932方法 v方法是一个功能模块 v方法和实例变量都必须定义在类内,方法是类的功能接口 ;v定义方法的原则:方法应当只执行单一的任务,并且方法名能有效地表达该任务;v方法的返回值类型、方法名和参数表共同称之为方法的特征。形参与实参第4章 Java的类 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计本章主要讲述的内容 类的定义和使用;类的定义和使用; 方法的定义和使用;方法的定义和使用; 实例变量和局部变量;实例变量和局部变量; 构造方法;构造方法; 方法的覆盖和重载;方法的覆盖和重载; 关键字关键字this的用法;的用法; 继承的概念和应用;继承的概念和应用; 组合与继承;组
2、合与继承; 抽象方法和抽象类;抽象方法和抽象类; 对象类型转换;对象类型转换; 访问权限限制符:访问权限限制符:public、private、protected。 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计对象的引用 程序中的思想来源于生活程序中的思想来源于生活 人类社会的发展就是从面向过程到面向对人类社会的发展就是从面向过程到面向对象的过程象的过程 人民公社人民公社 承包制承包制(责任清楚)责任清楚)面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计编程 个人编程与小组编程个人编程与小组编程 Windows 上千行代码上千行代码 耦合度耦合度 责任责任面向
3、对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计员员对象的思想保管员保管员对象就是被承包的数据对象就是被承包的数据对外提供服务对外提供服务内部自己管理内部自己管理面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计具有确定边界的就是对象 一台电视机是对象一台电视机是对象 命名为命名为x 19 x.尺寸尺寸 x.颜色红色颜色红色 x.开机()开机() x.换频道(换频道(5) 属性、方法、属性、方法、 参数:执行服务的额外信息参数:执行服务的额外信息面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.1类与对象 类好比是图纸类好比是图纸 对象好比是房子对象
4、好比是房子 类存在的理由:可能会创建多个房子类存在的理由:可能会创建多个房子 类并不真正存在类并不真正存在 类创建对象的过程是类创建对象的过程是实例化实例化面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.1 类与对象 在在Java程序中,除原子类型的变量以外都程序中,除原子类型的变量以外都是对象,连是对象,连Java程序本身也不例外。程序本身也不例外。 类是面向对象程序设计的基础,类是面向对象程序设计的基础,OO始终是始终是围绕着对象的封装性、继承性和多态性展围绕着对象的封装性、继承性和多态性展开讨论的。开讨论的。 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程
5、序设计 类是对象所应当具有的特征的描述类是对象所应当具有的特征的描述 类是抽象的存在类是抽象的存在 对象是具体的存在对象是具体的存在 对象对应着内存中的一片数据对象对应着内存中的一片数据面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.1.1 类与对象的区别 类是一个抽象的概念,对象是一个具体的类是一个抽象的概念,对象是一个具体的概念。概念。 类是在一组对象的基础上,通过抽象和概类是在一组对象的基础上,通过抽象和概括获得的一个概念。括获得的一个概念。 对象是由数据和方法紧密结合的一个封装对象是由数据和方法紧密结合的一个封装体,具有信息隐藏的能力。体,具有信息隐藏的能力。 对象
6、可以通过方法(方法)与其它对象进对象可以通过方法(方法)与其它对象进行通信,但并不知道这些方法的实现细节行通信,但并不知道这些方法的实现细节 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计开发java的任务 使用已有的类使用已有的类 编写自己的类编写自己的类 使用自己的类创建对象使用自己的类创建对象 调用对象的方法、属性去解决问题调用对象的方法、属性去解决问题面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 隐藏内部的结构隐藏内部的结构好比手表内部的齿轮、发条好比手表内部的齿轮、发条 显露其提供的功能显露其提供的功能 功能是使用者关心的功能是使用者关心的 使用
7、者不关心实现的细节使用者不关心实现的细节4.1.3 如何定义类 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.1.3 如何定义类 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.1.3 如何定义类(续) 系统类系统类Object是整个类层次结构中的根。是整个类层次结构中的根。 类内定义的变量称为实例变量,方法称为类内定义的变量称为实例变量,方法称为方法;方法; Java将类的定义和类的实现放在一起,便将类的定义和类的实现放在一起,便于系统维护。于系统维护。例如:例如:类与对象 图纸图纸class制造制造new面向对象程序设计面向对象程序设计面向对象程序
8、设计面向对象程序设计4.1.4 对象和引用 对象是客观存在的变量,对象的引用就是对对象是客观存在的变量,对象的引用就是对象的名字,例如:象的名字,例如:point p1; 创建对象:创建对象:p1=new point( ); 一个对象可以有多个别名一个对象可以有多个别名 ; 将一个变量设置为将一个变量设置为null,表明该变量不代表表明该变量不代表任何对象任何对象 : p1 = null ; 每个对象都有自己的变量,改变一个对象的每个对象都有自己的变量,改变一个对象的实例变量并不影响到另外一个对象。实例变量并不影响到另外一个对象。例如:例如:面向对象程序设计面向对象程序设计面向对象程序设计面向
9、对象程序设计93224.2 方法(续) 调用方法的格式:调用方法的格式:引用引用. 方法名方法名(参数表参数表); 例如:例如:point p1=new point( ),p2=new point( );p1.init(10,20); /仅对仅对p1对象的对象的x和和y进行赋值进行赋值面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计93234.3 实例变量和局部变量 Java中的变量分为两种:类内定义的实例中的变量分为两种:类内定义的实例变量,方法中定义的局部变量。变量,方法中定义的局部变量。 在同一个作用域内,不允许定义两个同名在同一个作用域内,不允许定义两个同名的局部变量。
10、的局部变量。 局部变量可以掩盖实例变量。局部变量可以掩盖实例变量。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计class loc / 程序程序4-2 int x=1;/ 实例变量实例变量 void printLocVar( ) int x=25;/ 局部变量局部变量 System.out.println(n x is :+x); +x; System.out.println( x is :+x); void printInstanceVar( ) System.out.println(n x is :+x); x*=10; System.out.println(x is :
11、+x); 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计public class testInstanceVar / 程序的主类程序的主类public static void main(String args ) loc obj=new loc( ); int x=5;/ 局部变量局部变量 x System.out.println( x is :+x); obj.printLocVar( ); obj.printInstanceVar( ); System.out.println( x is :+x); 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计9326
12、4.3 实例变量和局部变量(续) 实例变量属于对象,它描述了对象的属性,实例变量属于对象,它描述了对象的属性,随着对象的存在而存在;随着对象的存在而存在; 局部变量是随着方法的调用而存在,一旦局部变量是随着方法的调用而存在,一旦方法调用结束,局部变量也就消亡了。方法调用结束,局部变量也就消亡了。 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计实例变量和类变量class dogfloat x;/实例变量实例变量static int y;/类变量类变量面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计实例方法和类方法float max(float x,float y
13、)/实例方法实例方法static float(int x)/类方法类方法面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计注意! 实例方法能对实例实例方法能对实例变量进行操作,也变量进行操作,也能对类变量进行操能对类变量进行操作,而类方法只能作,而类方法只能对类变量进行操作对类变量进行操作class Aint a;static int b;void f(int x,int y)a=x;b=y;static void g(int z)b=24;a=z;?面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计注意! 一个类中的方法可以互相调用,实例方法一个类中的方法可以互相
14、调用,实例方法可以调用该类中的其他方法;类中的类方可以调用该类中的其他方法;类中的类方法只能调用该类的类方法。法只能调用该类的类方法。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计注意! 对成员变量的操作只对成员变量的操作只能放在方法中。方法能放在方法中。方法可以对成员变量和自可以对成员变量和自己定义的局部变量进己定义的局部变量进行操作。行操作。class Aint a=12;float b=123.4f;class Aint a;float b;a=12;/正确正确?b=12.3f;/正确?正确? 思考为什么?思考为什么?面向对象程序设计面向对象程序设计面向对象程序设计面向
15、对象程序设计93344.4 构造方法 构造方法的功能是在创建对象时初始化对构造方法的功能是在创建对象时初始化对象的实例变量;象的实例变量; 构造方法与类具有相同的名字;构造方法与类具有相同的名字; 构造方法没有返回值;构造方法没有返回值; 如果类中没有定义构造方法,编译器会自如果类中没有定义构造方法,编译器会自动创建一个缺省的、不带参数的构造方法。动创建一个缺省的、不带参数的构造方法。 构造方法是在对象创建之后,构造方法是在对象创建之后,new操作完成操作完成前被调用的。前被调用的。 class point / 程序程序4-3int x, y; point(int a, int b) x=a;
16、y=b;public class createPoint public static void main(String args )point p= new point(10,20); System.out.println(p.x + +p.y); 思考:无构造方法怎么办?思考:无构造方法怎么办?面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.5 方法重载 方法重载是在一个类中定义二个或多个同方法重载是在一个类中定义二个或多个同名的方法,但方法的参数个数或类型不完名的方法,但方法的参数个数或类型不完全相同;例如:全相同;例如:class point int x, y; po
17、int(int a, int b) x=a; y=b; point( )x=-1;y=-1; 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计注意以下两点 一旦定义了构造方法,一旦定义了构造方法,Java就不能再调用就不能再调用系统缺省构造方法;系统缺省构造方法; 方法重载的一个误区是靠返回值区别重载,方法重载的一个误区是靠返回值区别重载,即定义多个方法,它们的名称和形参类型即定义多个方法,它们的名称和形参类型完全相同,但返回值不同,这是不允许的。完全相同,但返回值不同,这是不允许的。 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计对象比较 运算符与运算符与e
18、quals()方法的区别()方法的区别 String s1=new String(“abc”); String s2=new String(“abc”); String s3=s1; if(str1=str2)System.out.println(“true”); else System.out.println(“false”);面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计对象的生命周期 离开声明的离开声明的 ; 引用赋值空;引用赋值空; 一个对象两个引用,其中一个赋值空一个对象两个引用,其中一个赋值空面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计垃圾回收
19、 finalize()方法方法 System.gc()面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.6 关键字this 在类的方法定义中使用的在类的方法定义中使用的this代表使用该方代表使用该方法的对象的引用法的对象的引用 当必须指出当前使用方法的对象是谁时要当必须指出当前使用方法的对象是谁时要用用this 有时使用有时使用this处理方法中成员变量和参数重处理方法中成员变量和参数重名的情况名的情况 this可以看作一个变量,它的值时当前对象可以看作一个变量,它的值时当前对象的引用的引用面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.6 关键字thi
20、s(续) this指代对象可以用于解决实例变量被局部指代对象可以用于解决实例变量被局部变量屏蔽的问题。变量屏蔽的问题。 例如:例如:class point int x , y; void init(int x, int y )this.x=x;this.y=y; 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.6 关键字this (续) 在构造方法内部使用在构造方法内部使用this,它用于指代另外,它用于指代另外一个构造方法,但不能指代非构造方法。例一个构造方法,但不能指代非构造方法。例如:如:class point int x, y; point( )this(-1,-1
21、); point(int a, int b) x=a; y=b; 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计4.7 继承 继承是软件重用的一种形式继承是软件重用的一种形式 ,可以提高系可以提高系统的性能统的性能; 子类的对象也是其超类的对象,反之未必子类的对象也是其超类的对象,反之未必继承语法:继承语法:class className extends superClassName 各实例变量和方法的定义各实例变量和方法的定义 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 java只支持单继承,不允许多重继承只支持单继承,不允许多重继承 java可以有多
22、层继承,可以有多层继承,继承具有传递性。继承具有传递性。 子类继承父类的的所有成员变量和成员方子类继承父类的的所有成员变量和成员方法。法。不继承父类的构造方法、私有成员?不继承父类的构造方法、私有成员?面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计关键字super 构造方法是一种特殊的方法,子类不能继构造方法是一种特殊的方法,子类不能继承父类的构造方法,但子类构造方法可以承父类的构造方法,但子类构造方法可以通过通过super调用父类的构造方法。调用父类的构造方法。 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计再次讨论构造方法 若父类没有定义构造方法,那么对
23、父类数若父类没有定义构造方法,那么对父类数据的初始化将采用系统缺省的构造方法;据的初始化将采用系统缺省的构造方法;例如:例如: class point int x, y; class circle extends point int radius; circle(int r, int x, int y) this.x=x; this.y=y; radius=r; 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计再次讨论构造方法 若父类定义有缺省构造方法,那么子类可根若父类定义有缺省构造方法,那么子类可根据自己的需要设置自己的构造方法。例如:据自己的需要设置自己的构造方法。例如:
24、 class point int x, y; point( ) this(0,0); point(int x, int y) this.x=x; this.y=y; class circle extends point / 注意子类的构造方法注意子类的构造方法 int radius; circle(int r, int x, int y) radius=r; 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计再次讨论构造方法(续) 若父类定义的构造方法都是有参的,那么子若父类定义的构造方法都是有参的,那么子类构造方法必须通过类构造方法必须通过super调用父类构造方调用父类构造方
25、法,例如:法,例如:class point private int x, y; point(int x, int y) this.x=x; this.y=y; class circle extends point int radius; circle(int r, int x, int y) super(x, y); radius=r; 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计子类对象的实例化过程1.分配成员变量的存储空间并进行默认初始分配成员变量的存储空间并进行默认初始化化2.绑定构造方法参数,将绑定构造方法参数,将new 类名类名(参数列表参数列表)传递的参数赋值给
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象
限制150内