java面向对象程序设计第四章.ppt
《java面向对象程序设计第四章.ppt》由会员分享,可在线阅读,更多相关《java面向对象程序设计第四章.ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java 初级初级第四章 面向对象(上)l什么是抽象l类与对象及其关系l类中定义的属性(域)与方法(操作)l对象l构造方法l类成员属性和方法的其它修饰符l包(Package)主要内容主要内容什么是抽象抽象的定义抽象的定义抽象抽象(abstraction)是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确的简明扼要的认识。动物动物经过人类抽象用一个叫”动物”的类来概括类与对象及其关系类与对象及其关系类与对象及其关系 l对象是对客观事物的抽象。l类是对对象的抽象,在语言中是一种抽象的数据类型。l类的定义在Java中可简述为cla
2、ss类名l它们的关系是,对象是类的实例,类是对象的模板。上图很好地说明了类和对象之间的关系。所有的苏35战斗机都是按照一个图纸设计出来的,其中一个飞机改装后不会对其它飞机造成影响,但如果修改图纸,则会影响到以后生产出来的所有飞机。类中定义的属性与方法类中定义的属性(域)与方法(操作)类中定义的属性(域)与方法(操作)类和对象都有属性和操作,属性是事物静态特征的抽象,操作是事物动态特征的抽象。classFighterPlaneStringname;intmissileNum;voidfire()if(missileNum0)missileNum-=1;System.out.println(“no
3、wfireamissile!”);elseSystem.out.println(“Nomissileleft!”);类的属性或称为“域”类的方法注意:注意:l以类为模板产生对象,实质上就是将类中定义的属性或方法代码拷贝到生成的对象当中。l当属性为普通数据类型时,其值就在对象内部当中;而当为引用时,引用的对象在对象的外部。l类中定义的属性可以被类中所有的方法所访问。l方法中的形式参数和定义的局部变量的作用域仅限于方法,局部变量在使用前必须进行赋值初始化。如果局部变量和类中的属性变量重名,则在方法中对同名变量改变的是局部变量。局部变量应用举例局部变量应用举例classFighterPlane1St
4、ringname=su30;intmissileNum;voidinit(String_name)Stringname=_name;System.out.println(name);System.out.println(this.name);publicstaticvoidmain(Stringargs)FighterPlane1fp=newFighterPlane1();fp.init(su35);类中定义的方法的递归调用类中定义的方法的递归调用用Java打印菲波那契数列的第10项(1,1,2,3,5,)publicclassTestSeqpublicstaticintfseq(intn)i
5、f(n0)return-1;/进行参数校验if(n=0|n=1)return1;elsereturnfseq(n-1)+fseq(n-2);publicstaticvoidmain(Stringargs)System.out.println(fseq(10);输出结果为89递归问题解读递归问题解读 l递归问题:一个较为复杂的问题,可以被分解成为若干相对简单且类同的子问题,如此进行分解直到这样的子问题可以直接求解,这样的问题就是递归问题。l递归程序直接或间接的调用自身。l当递归的规模很大时很容易造成内存空间不足而出现问题,因此,往往需要将递归转为循环进行求解 对象对象的产生对象的产生 对象图是以
6、类图为模板,对象中的属性和方法是以类中定义的属性和方法为参照而产生的,如下图所示:NEW类对象对象的产生使用下面的代码:newFighterPlane();根据类模板产生一个对象,并在计算机内存中为之开辟相应空间对象的声明使用下面的代码:FighterPlanefp;fp相当一个遥控器,但此时它并不能遥控任一FighterPlane对象,需要指明它遥控哪个对象。对象的引用对象的引用l要把产生的对象和遥控器相连接,需要下面的代码:fp=newFighterPlane();l对象的产生和对象的声明不是一个概念,有声明时可以没有对象,正像有遥控器时可以没有电视机一样。l当声明被赋予特定对象后,此时,
7、声明就被另一个概念“引用”所取代,也就是说,此时可以通过引用对对象进行控制了。NEW类对象对象的内存空间对象的内存空间内存空间分为堆和栈,当在程序中发生函数调用时,为被调函数在栈中分配空间,当函数调用完毕后,栈释放。Application程序中的入口函数main,作为一个特殊的函数,其非静态变量都存放在栈中(静态变量放在堆中),fp也不例外,但产生的对象则放在堆里。如图所示栈内存栈内存0 x90000 x9000name堆内存堆内存new FighterPlane()产生的对象产生的对象fp某某函函数数的的栈栈空空间间对象作为参数的特点对象作为参数的特点 普通数据类型作为参数传递是值传递,而对
8、象是引用传递。publicclassXprivatestaticinta=0;publicstaticvoidmain(Stringargs)modify(a);System.out.println(a);publicstaticvoidmodify(inta)a+;本程序的输出为0,因为a+是对形式参数进行自增,而不是对象属性a进行自增。对象的引用传递举例对象的引用传递举例classIntClassintvalue;publicclassRunIntClasspublicstaticvoidmodifyValue(IntClasss,intval)s.value=val;publicstat
9、icvoidmain(Stringargs)IntClassa=newIntClass();modifyValue(a,8);System.out.println(a.value);在A方法中产生对象,A调用B方法,在B中去赋值,然后在A中去使用sa对象classIntClassintvalue;publicclassRunIntClasspublicstaticIntClassgetInstance()/在方法中产生对象IntClasss=newIntClass();s.value=8;returns;/引用返回publicstaticvoidmain(Stringargs)/调用环境中去使
10、用IntClassa=getInstance();System.out.println(a.value);在A方法中产生对象,在B方法中去使用。对象as构造方法构造方法定义构造方法定义 构造方法是一个与类名相同的类方法。每当使用new关键字创建一个对象,为新建对象开辟了内存空间之后,Java系统将自动调用构造方法初始化这个新建对象。构造方法举例构造方法举例classIntClassintvalue;/定义构造方法并初始化value方法,它无返回类型 public IntClass(int val)value=val;publicclassRunIntClasspublicstaticIntCl
11、assgetInstance()/调用构造方法,从而省略了s.value代码 IntClass s=new IntClass(8);/s.value=8;returns;publicstaticvoidmain(Stringargs)IntClassa=getInstance();System.out.println(a.value);构造方法的特征构造方法的特征 构造方法的方法名与类名相同。构造方法是类的方法,不能由编程人员通过对象引用来调用,在创建一个类的对象的同时,系统会自动调用该类的构造方法将新对象进行初始化;不能对构造方法指定类型,它有隐含的返回值,该值由系统内部使用;如果指定了相应
12、的类型,则该方法就不是构造方法,如下面代码 publicclassAvoidA()System.out.println(ClassA);publicstaticvoidmain(Stringargs)newA();上面的代码中A()前因为有返回类型void,则不是构造方法。构造方法可以重载;构造方法也可以继承;如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个缺省的空构造方法。这个空构造方法没有形式参数,也没有任何具体语句,不能完成任何操作。但在创建这个类的新对象时,系统要调用该类的缺省构造方法将新对象属性初始化,这个构造方法前的修饰符将同类前的修饰符保持一致。如果自行定义了
13、构造方法,则系统不再创建这个默认的构造方法。缺省构造方法举例缺省构造方法举例classIntClassintvalue;publicclassRunIntClasspublicstaticIntClassgetInstance()IntClasss=newIntClass();/系统调用缺省的IntClass的构造方法s.value=8;returns;publicstaticvoidmain(Stringargs)IntClassa=getInstance();System.out.println(a.value);构造方法赋值注意事项构造方法赋值注意事项 当构造方法中的参数名可能与数据成员
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 程序设计 第四
限制150内