欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    3面向对象编程2.ppt

    • 资源ID:70013604       资源大小:1.05MB        全文页数:106页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    3面向对象编程2.ppt

    第三章第三章 面向对象编程面向对象编程面向对象编程面向对象编程n学习目标学习目标n掌握:掌握创建和使用类对象、使用包的基本方法。掌握:掌握创建和使用类对象、使用包的基本方法。n理解:理解面向对象程序设计的基本思想和面向对象理解:理解面向对象程序设计的基本思想和面向对象的概念。的概念。n了解:类的多态,接口的声明及实现方法。了解:类的多态,接口的声明及实现方法。n重点重点n明确各种修饰符的作用,理解继承和复用的概念明确各种修饰符的作用,理解继承和复用的概念n理解父类和子类理解父类和子类n学会学会Java类的定义和对象的创建。类的定义和对象的创建。n难点难点n理解多态性是如何扩充和维护系统性能理解多态性是如何扩充和维护系统性能n类多态的实现。类多态的实现。本讲要点本讲要点面向对象编程面向对象编程面向过程和面向对象面向过程和面向对象 面向过程程序设计示意图面向过程程序设计示意图面向对象程序设计示意图面向对象程序设计示意图1-4面向对象编程面向对象编程3.1面向对象的思想面向对象的思想 n面向对象的基本概念面向对象的基本概念n对象是具有某种特性和某种功能的东西。对象是具有某种特性和某种功能的东西。n将同一种类型的对象归为一个类。将同一种类型的对象归为一个类。n类是对象的抽象,对象是类的实例。类是对象的抽象,对象是类的实例。n类的特征和行为分别命名为属性和方法类的特征和行为分别命名为属性和方法n类类是是对象对象的模板,而的模板,而对象对象是是类类的的实例;实例;n共性与个性的关系,是抽象与具体的关系共性与个性的关系,是抽象与具体的关系。面向对象编程面向对象编程n例如:电视机例如:电视机类类属性:尺寸属性:尺寸颜色颜色型号型号方法:打开方法:打开关闭关闭选择节目选择节目面向对象编程面向对象编程3.1面向对象的思想面向对象的思想n一个类中定义的方法可被该类的对象调用,一个类中定义的方法可被该类的对象调用,对象方法的每一调用被称作发送一个消息对象方法的每一调用被称作发送一个消息message给对象给对象。n对象间是相互独立,通过发送消息相互影响。对象间是相互独立,通过发送消息相互影响。一个消息由三部分组成:一个消息由三部分组成:n(1)消息目标对象;消息目标对象;n(2)执行方法的名字;执行方法的名字;n(3)执行方法所需要的参数(执行方法所需要的参数(parameters)。)。面向对象编程面向对象编程n封装性封装性n封装性就是把对象的属性和方法结合成一个独立的相封装性就是把对象的属性和方法结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节。对外形成一同单位,并尽可能隐蔽对象的内部细节。对外形成一个边界个边界或者说形成一道屏障或者说形成一道屏障,只保留有限的对外,只保留有限的对外接口使之与外部发生联系。接口使之与外部发生联系。n继承性继承性n特殊类的对象拥有其一般类的全部属性与方法,称作特殊类的对象拥有其一般类的全部属性与方法,称作特殊类对一般类的继承特殊类对一般类的继承.一般类为父类(一般类为父类(superclass,超类),特殊类为子类超类),特殊类为子类(subclass)。n多态性多态性n对象的多态性是指在一般类中定义的属性或方法被特对象的多态性是指在一般类中定义的属性或方法被特殊类继承之后,可以具有不同的数据类型或表现出不殊类继承之后,可以具有不同的数据类型或表现出不同的行为。同的行为。面向对象的特点面向对象的特点面向对象三大机制:面向对象三大机制:封装:隐藏内部实现封装:隐藏内部实现继承:复用现有代码继承:复用现有代码多态:改写对象行为多态:改写对象行为面向对象编程面向对象编程3.2类类n类由数据成员和方法组成。类封装了一类对象的状类由数据成员和方法组成。类封装了一类对象的状态和方法态和方法。汽车汽车(类类)品牌品牌型号型号颜色颜色-加速与减速设计加速与减速设计转向设计转向设计刹车设计刹车设计面向对象编程面向对象编程类的声明类的声明n类的修饰符用于说明类的特征和访问权限,包括类的修饰符用于说明类的特征和访问权限,包括public,abstract,final,friendly。public:表示:表示此类为此类为“公共公共”类类;abstract:表示此类为:表示此类为“抽象抽象”类类;final:表示此类为:表示此类为“最终最终”类类.n类名是类名是Java标识符。通常,类名的第一个字母为大写。标识符。通常,类名的第一个字母为大写。类类的的修修饰饰符符classclass类类名名extends extends 父父类类名名 implements implements ,接口名,接口名 成员变量;成员变量;成员方法;成员方法;(简称方法简称方法)类声明类声明类体类体系统定义类系统定义类(系统提供的类系统提供的类):已经定义好的类,可直接使用。:已经定义好的类,可直接使用。用用户户定定义义类类(用用户户自自己己定定义义的的类类):创创建建一一个个新新类类,即即创创建建一一个个新新的数据类型。的数据类型。Java类类面向对象编程面向对象编程n一个一个Java程序可以定义很多个类,但只能有一个程序可以定义很多个类,但只能有一个public类,程序的主类必须是类,程序的主类必须是public类。每个程序类。每个程序都从主类开始执行。都从主类开始执行。面向对象编程面向对象编程nclass,extends,implements都是都是Java关键字。关键字。nclass表明定义类。表明定义类。nextends表明目前定义的类是父类继承而来的子类,该表明目前定义的类是父类继承而来的子类,该父类必须存在。父类必须存在。nimplements表明类要实现某个接口。各接口名之间用表明类要实现某个接口。各接口名之间用逗号逗号“,”分隔。分隔。n类体包含:类体包含:实现类功能的实现类功能的Java语言程序代码、成语言程序代码、成员变量、成员方法。员变量、成员方法。n类的成员变量定义类的成员变量定义:修饰符修饰符 数据类型数据类型 成员变量成员变量=初值初值;n成员变量的修饰符成员变量的修饰符n访问控制修饰符访问控制修饰符public、protected、private;n存在修饰符存在修饰符static、abstract和和final。类的声明类的声明面向对象编程面向对象编程n其中:其中:nfinal:表示该变量不能再被修改,称为常量。:表示该变量不能再被修改,称为常量。例如:例如:finalinta=3;nstatic:表示该变量时静态变量,也称为类变量。:表示该变量时静态变量,也称为类变量。属于这个类的所有对象的变量。而实例变量只属于属于这个类的所有对象的变量。而实例变量只属于某个对象。通过某个对象。通过“类类.变量名变量名”和和“对象对象.变量名变量名”引引用。用。n默认修饰符,如果某个成员变量没有设置访问权限,默认修饰符,如果某个成员变量没有设置访问权限,允许类自身以及在同一个包中的所有类的变量访问。允许类自身以及在同一个包中的所有类的变量访问。面向对象编程面向对象编程nclassExamplenninti;nstaticintj;npublicstaticvoidmain(Stringargs)nnExamplea=newExample();na.j=3;nExample.j=2;na.i=4;nExample.i=5;nn面向对象编程面向对象编程n类的成员方法类的成员方法定义的一般形式为:定义的一般形式为:方法修饰符方法修饰符 ()方法体方法体 n成员方法修饰符成员方法修饰符主要有主要有public、private、protected、final、static、abstract和和synchronized七种七种。n成员方法的返回值类型成员方法的返回值类型n方法返回值用方法返回值用return语句来实现,返回的数据类型必须语句来实现,返回的数据类型必须与与方法说明中的方法返回值类型方法说明中的方法返回值类型一致一致;n如果如果不需要不需要返回值,则其返回值类型被说明为返回值,则其返回值类型被说明为void;类的声明类的声明面向对象编程面向对象编程nfinal:为最终方法,不能在其所在类的子类中被重载,为最终方法,不能在其所在类的子类中被重载,只能被继承,不能被重写。只能被继承,不能被重写。nstatic:不需要初始化该方法所在的类。也不能被它不需要初始化该方法所在的类。也不能被它的子类所重载。的子类所重载。在一个在一个static方法中,只能访问被定义为方法中,只能访问被定义为static的类的类变量和类方法。变量和类方法。nabstract:抽象方法,只有方法说明,没有方法体。抽象方法,只有方法说明,没有方法体。在它所在的类的子类中具体实现。抽象方法所在的在它所在的类的子类中具体实现。抽象方法所在的类称为抽象类。类称为抽象类。nsynchronized:同步方法,在多线程中使用。同步方法,在多线程中使用。面向对象编程面向对象编程n方法名方法名成员方法名是成员方法名是Java语言合法的标识符。语言合法的标识符。n参数列表参数列表成员方法的参数列表是由逗号分隔的类型及参数名组成,成员方法的参数列表是由逗号分隔的类型及参数名组成,是可选项。是可选项。n方法体方法体方法体是一个方法定义的主要部分,包含了所有实现方方法体是一个方法定义的主要部分,包含了所有实现方法功能的法功能的Java语言程序代码,方法体用语言程序代码,方法体用“”括起来括起来。例例3-2:源程序名为:源程序名为TestCir.java;定义一个方法,其功能是;定义一个方法,其功能是根据参数根据参数r的大小,返回圆的面积。的大小,返回圆的面积。运行结果:运行结果:类的声明类的声明面向对象编程面向对象编程publicclassTestCirpublicstaticvoidmain(Stringargs)/main方法方法doublek;TestCirmj=newTestCir();k=mj.area(5k=mj.area(5);System.out.println(k);publicdoublearea(intr)/定义定义area方法,带有一个参数方法,带有一个参数rfinaldoublePI=3.14;/定义常量定义常量PI为为3.14returnPI*r*r;/由由r的值,计算面积,返回面积值的值,计算面积,返回面积值类的声明类的声明面向对象编程面向对象编程项目任务:n定义一个正方形,它的数据成员包括长和宽,成员定义一个正方形,它的数据成员包括长和宽,成员函数包括设置长和宽的值,求长方形的面积。在主函数包括设置长和宽的值,求长方形的面积。在主方法中定义正方形对象,求长是方法中定义正方形对象,求长是5,宽是,宽是3的面积。的面积。然后再求长是然后再求长是8,宽是,宽是4的面积。的面积。n定义一个职员类定义一个职员类Emplyee(姓名,年龄,性别,薪(姓名,年龄,性别,薪水),一个显示信息的方法,并输出职员信息。水),一个显示信息的方法,并输出职员信息。面向对象编程面向对象编程构造方法构造方法构造方法是一种特殊的方法,其名称与类名相同。构造方法是一种特殊的方法,其名称与类名相同。Java语言中每个类都有构造方法语言中每个类都有构造方法。n构造方法的特点构造方法的特点n构造方法没有返回值类型,没有构造方法没有返回值类型,没有void。其修饰符只能是。其修饰符只能是访问控制修饰符,即访问控制修饰符,即public、private、protected中中的任一个。的任一个。n构造方法不能从父类中继承。构造方法不能从父类中继承。n构造方法可以重载,一个类可以有任意多个构造方法。构造方法可以重载,一个类可以有任意多个构造方法。不同的构造方法根据参数的不同状态来选择合适的构造不同的构造方法根据参数的不同状态来选择合适的构造方法。方法。n构造方法不能直接通过方法名引用,必须通过构造方法不能直接通过方法名引用,必须通过new运算运算符。符。n在构造方法中调用当前类和其父类的构造方法,但必须在构造方法中调用当前类和其父类的构造方法,但必须在方法体的第一条语句。在方法体的第一条语句。面向对象编程面向对象编程n在前一个任务的基础上,构造在前一个任务的基础上,构造3个构造函数。个构造函数。面向对象编程面向对象编程this对象本身对象本身n表示对象本身表示对象本身n在不同方法中表示调用这个方法的对象在不同方法中表示调用这个方法的对象n在构造方法中表示新创建的对象在构造方法中表示新创建的对象n作用作用n使用使用this访问域及方法访问域及方法n使用使用this解决局部变量与成员变量同名解决局部变量与成员变量同名n在构造方法中,用在构造方法中,用this调用另一个构造方法调用另一个构造方法n必须放在第一句必须放在第一句n不能通过不能通过this引用类变量、类方法引用类变量、类方法面向对象编程面向对象编程classPersonStringname;publicvoidex1(Stringname)/name=name;this.name=name;publicvoidex2()ex1(“XMJ”);/?this.ex1(“XMJ”);/?/局部变量与成员变量同名局部变量与成员变量同名publicclassApublicA(inti)publicA(inti,intj)this(5);/第一句第一句/调用另一个构造方法调用另一个构造方法面向对象编程面向对象编程super直接父类直接父类使用使用super访问父类被子类隐藏的同名的成员访问父类被子类隐藏的同名的成员使用父类的构造方法使用父类的构造方法super()必须放在第一句必须放在第一句class A int i;void value()i=10;System.out.println(i);class B extends A int i;void value()i=20;super.value();System.out.println(i);System.out.println(super.i);面向对象编程面向对象编程nthis与与super的区别的区别nthis使用当前类的构造方法,使用当前类的构造方法,super使用其使用其父类的构造方法。父类的构造方法。nthis用以指代一个对象自身,它的作用主要是用以指代一个对象自身,它的作用主要是将自己当成对象作为参数,传送给别的对象将自己当成对象作为参数,传送给别的对象中的方法;中的方法;nsuper为了访问父类的成员变量或方法,采用为了访问父类的成员变量或方法,采用super加上点和成员变量或方法的形式。加上点和成员变量或方法的形式。构造方法构造方法面向对象编程面向对象编程例例3-3:源程序名为:源程序名为Inheritance.java,是构造方法的例子。,是构造方法的例子。/*定义一个父类定义一个父类superclassname*/classsuperclassnameintx;superclassname()/父类无参数构造方法父类无参数构造方法x=3;System.out.println(在父类中在父类中x=+x);voiddosomething()/父类中成员方法父类中成员方法System.out.println(在父类中在父类中dosomething();面向对象编程面向对象编程/*定义一个子类定义一个子类subclass,从,从superclassname继承而来继承而来*/classsubclassextendssuperclassnameintx;subclass()super();/调用父类无参数构造方法调用父类无参数构造方法 x=5;System.out.println(在子类中在子类中x=+x);voiddosomething()/子类中成员方法子类中成员方法super.dosomething();/调用父类中成员方法调用父类中成员方法dosomething()System.out.println(在子类中在子类中dosomething();System.out.println(super.x=+super.x+sub.x=+this.x);/*利用利用super引用父类对象,利用引用父类对象,利用this引用当前对象引用当前对象*/面向对象编程面向对象编程/*定义主程序类定义主程序类inheritance*/classInheritancepublicstaticvoidmain(Stringargs)subclasssubc=newsubclass();/调用子类构造方法创建一个对象调用子类构造方法创建一个对象subcsubc.dosomething();/调用子类的成员方法调用子类的成员方法dosomething()运行结果:运行结果:面向对象编程面向对象编程3.3对象对象n对象的定义对象的定义=new(参数(参数1,参数,参数2,););或者:或者:;=new(参数(参数1,参数,参数2,););n创建对象实际执行了三个操作:创建对象实际执行了三个操作:说明对象说明对象、实例化对实例化对象象和和初始化对象初始化对象。n说明对象说明对象:就是给对象命名,也称定义一个实例变量。:就是给对象命名,也称定义一个实例变量。一般形式为:一般形式为:;n实例化对象实例化对象:给对象分配存储空间,用来保存对象的数据:给对象分配存储空间,用来保存对象的数据和代码。和代码。new运算符用来实现对象的实例化。运算符用来实现对象的实例化。=new(参数(参数1,参数参数2,););面向对象编程面向对象编程对象的使用对象的使用n初始化对象初始化对象通过调用该对象所在类的构造方法来实通过调用该对象所在类的构造方法来实现的。现的。n引用对象的方法一般形式:引用对象的方法一般形式:(,);例例3-4:程序:程序TwoArea.java,是引用对象的例子。,是引用对象的例子。执行结果:执行结果:面向对象编程面向对象编程/*定义一个类定义一个类Point*/classPointpublicintx;/定义成员变量定义成员变量publicinty;/定义成员变量定义成员变量publicPoint()/Point构造方法,不带参数构造方法,不带参数this.x=0;/引用当前引用当前xthis.y=0;/引用当前引用当前ypublicPoint(intx,inty)/Point构造方法,构造方法,带两个参数带两个参数this.x=x;/引用当前引用当前xthis.y=y;/引用当前引用当前y面向对象编程面向对象编程/*定义一个类定义一个类Graph*/classGraphpublicintwidth=0;/定义成员变量定义成员变量publicintheight=0;/定义成员变量定义成员变量publicPointorigin;/定义成员变量定义成员变量publicGraph()/Graph构造方法构造方法1,不带参数,不带参数origin=newPoint(0,0);publicGraph(Pointp)/Graph构造方法构造方法2,带一个参数,带一个参数origin=p;publicGraph(Pointp,intw,inth)/Graph构造方法构造方法3,带三个参数,带三个参数origin=p;width=w;height=h;面向对象编程面向对象编程publicvoidmove1(intx,inty)/成员方法成员方法move1origin.x=x;origin.y=y;publicvoidmove2(inta,intb)/成员方法成员方法move2origin.x+=a;origin.y+=b;publicintarea()/成员方法成员方法areareturnwidth*height;面向对象编程面向对象编程publicclassTwoArea/*定义主程序类定义主程序类*/publicstaticvoidmain(Stringargs)intx=3,y=4;intw=4,h=5;Pointp1=newPoint(x,y);/将原点将原点p1定在定在(3,4)坐标点坐标点Pointp2=newPoint(6,8);/将原点将原点p2定在定在(6,8)坐标点坐标点Graphr1=newGraph(p1,w,h);Graphr2=newGraph(p2,8,10);r1.move1(4,6);/把矩形把矩形r1的原点移到(的原点移到(4,6)r2.move2(-2,4);/把矩形把矩形r2的原点的原点x坐标减坐标减2,y坐标加坐标加4System.out.println(两个矩形面积差两个矩形面积差=+(r2.area()-r1.area();/*调用成员方法计算矩形调用成员方法计算矩形r2与与r1面积差面积差*/System.out.print(r1的原点为的原点为(+r1.origin.x+,);System.out.println(r1.origin.y+);System.out.print(r2的原点为的原点为(+r2.origin.x+,);System.out.println(r2.origin.y+);面向对象编程面向对象编程3.4继承与多态继承与多态n继承性继承性n子类可以沿用父类的某些特征。子类也可以具有自己独子类可以沿用父类的某些特征。子类也可以具有自己独立的属性和操作。立的属性和操作。n继承分单继承和多继承。继承分单继承和多继承。面向对象编程面向对象编程什么是继承n在日常生活中,经常遇到如下问题。有一辆自行车,在日常生活中,经常遇到如下问题。有一辆自行车,自行车有颜色和型号大小之分,而公路赛车也有颜自行车有颜色和型号大小之分,而公路赛车也有颜色和型号大小之分,公路赛车多了一项速度的优势。色和型号大小之分,公路赛车多了一项速度的优势。自行车有的东西公路赛车全都有,而公路赛车有的自行车有的东西公路赛车全都有,而公路赛车有的东西自行车不一定有,它们相同地方有很多。在东西自行车不一定有,它们相同地方有很多。在JavaJava中,对于这种情况下就采用继承来完成这个功中,对于这种情况下就采用继承来完成这个功能。能。面向对象编程面向对象编程/这是一个类,表述的是一个自行车这是一个类,表述的是一个自行车 public class bikepublic class bike public String color;public String color;/自行车的颜色自行车的颜色 public int size;public int size;/自行车的大小自行车的大小,即型号即型号/这是一个类,表述的是一个公路赛类这是一个类,表述的是一个公路赛类pubic class racing_cyclepubic class racing_cycle public String color;public String color;/自行车的颜色自行车的颜色public int size;public int size;/自行车的大小自行车的大小,即型号即型号public String speed;public String speed;/公路赛车的速度公路赛车的速度 面向对象编程面向对象编程n/这是一个类,表述的是一个自行车这是一个类,表述的是一个自行车npublicclassbikennpublicStringcolor;/自行车的颜色自行车的颜色npublicintsize;/自行车的大小,即型号自行车的大小,即型号nn/这是一个类,表述的是一个公路赛车,它继承于自行车这是一个类,表述的是一个公路赛车,它继承于自行车npubicclassracing_cycleextendsbikennpublicStringspeed;/公路赛车的速度公路赛车的速度n面向对象编程面向对象编程n在在Java中,被继承的类叫超类(中,被继承的类叫超类(superclass),继承超类),继承超类的类叫子类(的类叫子类(subclass)。因此,子类是超类的一个功能上)。因此,子类是超类的一个功能上的扩展,它继承了超类定义的所有属性和方法,并且添加了的扩展,它继承了超类定义的所有属性和方法,并且添加了特有功能方法。特有功能方法。nJava是单继承的,子类可以有很多,父类只能有一个。上面是单继承的,子类可以有很多,父类只能有一个。上面的例子,如果加一个的例子,如果加一个Friend类,类,Son只能继承自只能继承自Father,要,要么继承么继承Friend,不能同时继承,不能同时继承Father和和Friend。nJava的继承是多层继承的,是一个类可以有很多子类,而子的继承是多层继承的,是一个类可以有很多子类,而子类下面又可以有很多子类。类下面又可以有很多子类。n父类没有定义一个无参的构造器,那么编译器就默认生成一父类没有定义一个无参的构造器,那么编译器就默认生成一个无参的构造器,也可以在子类构造器里显示使用个无参的构造器,也可以在子类构造器里显示使用super方方法调用父类构造器,法调用父类构造器,super方法里写几个参数就可以表示调方法里写几个参数就可以表示调用的是父类的哪一个构造器。用的是父类的哪一个构造器。面向对象编程面向对象编程n当父类中没有构造方法或只有不带参数的构造方法当父类中没有构造方法或只有不带参数的构造方法时,系统会在子类构造器自动加上时,系统会在子类构造器自动加上super语句,可语句,可以不显式地添加对父类构造器方法的调用,但如果以不显式地添加对父类构造器方法的调用,但如果父类中有带参数的构造器方法,那么,必须显式在父类中有带参数的构造器方法,那么,必须显式在构造器中使用构造器中使用super调用父类的带参数的构造器方调用父类的带参数的构造器方法,否则编译出错。法,否则编译出错。面向对象编程面向对象编程继承性继承性n继承的目的:实现代码重用。继承的目的:实现代码重用。n子类不能继承父类中访问权限为子类不能继承父类中访问权限为private的成员变量的成员变量和方法。和方法。n子类可以继承父类方法和成员变量,但它不能继承构子类可以继承父类方法和成员变量,但它不能继承构造方法。造方法。n创建子类格式:创建子类格式:Public class SubClass extends SuperClass 访问权限访问权限 class 类名类名 extends 父类父类 面向对象编程面向对象编程例例3-5:源程序名:源程序名CarDemo.java,是类的继承。,是类的继承。classCarintcar_number;voidset_number(intcar_num)car_number=car_num;voidshow_number()System.out.println(MycarNo.is:+car_number);继承性继承性面向对象编程面向对象编程classBusextendsCarintcapacity;voidset_capacity(intbus_car_capacity)capacity=bus_car_capacity;voidshow_capacity()System.out.println(Mycapacityis:+capacity);面向对象编程面向对象编程classCarDemopublicstaticvoidmain(Stringargs)BusDemoBus=newBus();DemoBus.set_number(6868);DemoBus.show_number();DemoBus.set_capacity(30);DemoBus.show_capacity();运行结果:运行结果:继承性继承性面向对象编程面向对象编程项目任务:点类点类x坐标和坐标和y坐标坐标方法(获取x和y的坐标)圆类圆类x坐标和坐标和y坐标,半径坐标,半径r方法(获取r)和(获取面积)圆柱类圆柱类x坐标和坐标和y坐标,半径坐标,半径r,高,高h方法(获取h)和(计算体积)面向对象编程面向对象编程多态性多态性n多态性体现在两个方面:由方法重载实现的静态多态多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运性(编译时多态)和方法重写实现的动态多态性(运行时多态)。行时多态)。n方法重写:指方法的含义被重写后替代方法重写:指方法的含义被重写后替代。n子类通过隐藏父类的成员变量和重写父类的方法,可以把父子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为。类的状态和行为改变为自身的状态和行为。n子类中重写的方法和父类中被重写的方法要具有相同的名字,子类中重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同。相同的参数表和相同的返回类型,只是函数体不同。n方法重写时应遵循的原则:方法重写时应遵循的原则:改写后的方法不能比被重写的方法有更严格的访问权限(可以改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。改写后的方法不能比重写的方法产生更多的例外。相同)。改写后的方法不能比重写的方法产生更多的例外。面向对象编程面向对象编程n自行车的移动和公路赛车的移动都是靠外力来移动,自行车的移动和公路赛车的移动都是靠外力来移动,二者是相同的。公路赛车继承了这一特点,但公路二者是相同的。公路赛车继承了这一特点,但公路赛车的移动速度就不相同了,移动的快慢就是由它赛车的移动速度就不相同了,移动的快慢就是由它们各自移动特性不相同决定的,们各自移动特性不相同决定的,面向对象编程面向对象编程nclassbikenn/自行车的移动速度自行车的移动速度npublicvoidmove()nnSystem.out.println(速度慢的速度慢的!);nn面向对象编程面向对象编程npublicclassracing_cycleextendsbiken/公路赛车的移动速度公路赛车的移动速度npublicvoidmove()nnSystem.out.println(速度快的速度快的!);nn面向对象编程面向对象编程npublicstaticvoidmain(Stringargs)nnracing_cyclerc=newracing_cycle();/创建了一个公路赛车的对象创建了一个公路赛车的对象,对象引用为对象引用为rcnrc.move();/执行了执行了move()方法方法nn面向对象编程面向对象编程例例3-6:源程序名:源程序名Rewritex.java,,是方法的重写的,是方法的重写的例子。例子。classSuperClassintx;voidsetF()x=0;System.out.println(Super的变量的变量x的值的值+x);面向对象编程面向对象编程voidsetF()/重写了父类的方法重写了父类的方法setF()x=6;System.out.println(Son的变量的变量x的值的值+x);classSubClassextendsSuperClassintx;/隐藏了父类的变量隐藏了父类的变量x多态性多态性面向对象编程面向对象编程classRewritexpublicstaticvoidmain(Stringargs)SubClassSon=newSubClass();Son.setF();SuperClassFather=newSubClass();Father.setF();运行结果:运行结果:多态性多态性面向对象编程面向对象编程n方法重载方法重载n方法重载是指同样方法在不同的地方具有不同的含义。方法重载是指同样方法在不同的地方具有不同的含义。n方法重载使一个类中可以有多个相同名字的方法。编译方法重载使一个类中可以有多个相同名字的方法。编译器根据参数的不同来静态确定调用相应的方法。器根据参数的不同来静态确定调用相应的方法。n方法重载中这些方法的参数必须不同,或是参数的数量方法重载中这些方法的参数必须不同,或是参数的数量不同,或是参数的类型不同。不同,或是参数的类型不同。例例3-8:源程序名源程序名TestLoad.java,方法重载的例子。,方法重载的例子。多态性多态性/*定义一个方法重载的类定义一个方法重载的类*/classLoadvoidreceive(inti)/receive方法,带有方法,带有int类型参数类型参数1个个System.out.print(Receiveonedata!:);System.out.println(i=+i);面向对象编程面向对象编程voidreceive(intx,inty)/receive方法,带有方法,带有int类型参数类型参数2个个System.out.print(Receivetwodatas!:);System.out.println(x=+x+,y=+y);voidreceive(doubled)/receive方法,带有方法,带有double类型参数类型参数1个个System.out.print(Receiveonedoubledata!:);System.out.println(d=+d);voidreceive(Strings)/receive方法,带有方法,带有string类型参数类型参数1个个System.out.print(Receiveasting!:);System.out.println(s=+s);面向对象编程面向对象编程/*主程序类主程序类*/publicclassTestLoadpublicstaticvoidmain(Stringargs)Loadmo=newLoad();/创建对象创建对象momo.receive(1);/调用调用receive方法,带方法,带int类型参数类型参数1个个mo.receive(2,3);/调用调用receive方法,带方法,带int类型参数类型参数2个个mo.receive(3.14159);/调用调用receive方法,带方法,带double类型参数类型参数1个个mo.receive(ItisaTest!);/调用调用receive方法,带方法,带string型参数型参数1个个运行结果:运行结果:面向对象编程面向对象编程项目任务n设计一个设计一个math类,通过它可以实现整数的加法运算类,通过它可以实现整数的加法运算和实数的加法运算。和实数的加法运算。n设计一个设计一个employee类,包括数据成员(姓名,年类,包括数据成员(姓名,年龄,工号,工资),构造方法,龄,工号,工资),构造方法,addsalary方法增方法增加工资(加薪加工资(加薪10%),),list显示信息。再设计一个显示信息。再设计一个manager类,增加数据成员类,增加数据成员position,改写,改写addsalary方法增加工资(加薪方法增加工资(加薪20%)。)。面向对象编程面向对象编程3.5抽象类和接口抽象类和接口n抽象类(见抽象类(见Animal.java)n只给出抽象结构,不给出每个成员函数的完整实现的类。只给出抽象结构,不给出每个成员函数的完整实现的类。n抽象方法:是指该方法只有方法说明却没有方法体。抽象方法:是指该方法只有方法说明却没有方法体。n用用abstract关键字来修饰一个抽象类,用关键字来修饰一个抽象类,用abstract关关键字来修饰一个抽象方法。键字来修饰一个抽象方法。n抽象类必须被继承,抽象方法必须被重写。抽象类必须被继承,抽象方法必须被重写。例例3-9源程序源程序Abstract.java,一个带有抽象成员函数的类。,一个带有抽象成员函数的类。abstractclassAabstractvoidcallme();voidme()System.out.println(在在A的的me成员函数里成员函数里);面向对象编程面向对象编程抽象类抽象类classBextendsAvoidcallme()System.out.println(在在B的的callme成员函数里成员函数里);publicclassAbstractpublicstaticvoidmain(Stringarg

    注意事项

    本文(3面向对象编程2.ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开