欢迎来到人人文库网! | 帮助中心 人人文档renrendoc.com美如初恋!
人人文库网
全部分类
  • 图纸下载>
  • 教育资料>
  • 专业文献>
  • 应用文书>
  • 行业资料>
  • 生活休闲>
  • 办公材料>
  • 毕业设计>
  • ImageVerifierCode 换一换
    首页 人人文库网 > 资源分类 > PPT文档下载  

    Java语言程序设计基础教程(继承、接口和内部类)ppt.ppt

    • 资源ID:62113316       资源大小:92.52KB        全文页数:48页
    • 资源格式: PPT        下载积分:15积分
    扫码快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
    二维码
    微信扫一扫登录

    手机扫码下载

    请使用微信 或支付宝 扫码支付

    • 扫码支付后即可登录下载文档,同时代表您同意《人人文库网用户协议》

    • 扫码过程中请勿刷新、关闭本页面,否则会导致文档资源下载失败

    • 支付成功后,可再次使用当前微信或支付宝扫码免费下载本资源,无需再次付费

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

    Java语言程序设计基础教程(继承、接口和内部类)ppt.ppt

    第4章继承 接口和内部类 继承 超类和子类抽象类和接口内部类Class类 4 1继承 超类和子类 继承是面向对象编程技术的一块基石 是一种由已有的类创建新类的机制 运用继承 可以先创建一个通用类 它定义了一系列相关属性的一般特性 该类可以被更具体的类继承 每个具体的类都增加一些自己特有的东西 在Java术语学中 被继承的类叫超类 superclass 继承超类的类叫子类 subclass 子类不能继承父类中访问权限为private的成员变量和方法 子类可以重写父类的方法 及命名与父类同名的成员变量 Java不支持多重继承 即一个类从多个超类派生的能力 通过继承实现代码复用 Java中所有的类都是通过直接或间接地继承java lang Object类得到的 4 1 1子类 继承一个类 只要用extends关键字把一个类的定义合并到另一个中就可以了 创建子类的一般格式为 classSubClassextendsSuperClass 例如 classStudentsextendsPeople 4 1 2子类的继承 子类通过隐藏父类的成员变量和重写父类的方法 可以把父类的状态和行为改变为自身的状态和行为 例如 classSuperClass intx voidsetX x 0 classSubClassextendsSuperClass intx 隐藏了父类的变量x voidsetX 重写了父类的方法setX x 5 注意 子类中重写的方法和父类中被重写的方法要具有相同的名字 相同的参数表和相同的返回类型 只是函数体不同 例4 1 一个关于继承的简单例子 Createasuperclass classSA inti j voidshowij System out println iandj i j CreateasubclassbyextendingclassA classSBextendsA intk voidshowk System out println k k voidsum System out println i j k i j k classSimpleInheritance publicstaticvoidmain Stringargs SAsuperOb newSA SBsubOb newSB Thesuperclassmaybeusedbyitself superOb i 10 superOb j 20 System out println ContentsofsuperOb superOb showij System out println ThesubclasshasAccesstoallpublicmembersofitssuperclass subOb i 7 subOb j 8 subOb k 9 System out println ContentsofsubOb subOb showij subOb showk System out println System out println Sumofi jandkinsubOb subOb sum 4 1 3super关键字 与类中this关键字相似 Java语言中使用关键字super表示父类对象 通过在子类中使用super做前缀可以引用被子类隐藏的父类变量或被子类重写的父类方法 super用来引用当前对象的父类 虽然构造方法不能够继承 但利用super关键字 子类构造方法中也可以调用父类的构造方法 Super的使用有2种情况 1 操作被隐藏的变量和方法 访问父类被隐藏的成员变量 一般格式为 super variable 调用父类中被重写的方法 一般格式为 super Method paramlist 假如成员变量x和方法y 分别是被子类隐藏的父类的变量和方法 则 super x 表示父类的成员变量xsuper y 表示父类的成员方法y 例4 2 利用supers操作父类被隐藏和重写的变量和方法 classep4 2 a intn floatf floatsum 0 for inti 1 i n i sum sum i returnsum classep4 2 bextendsep4 2 a intn floatf floatc super n n c super f returnc n floatg floatc c super f returnc 2 classep4 2 publicstaticvoidmain Stringargs ep4 2 baver newep4 2 b aver n 100 System out println result one aver f System out println result two aver g 2 使用super调用父类的构造方法 子类不能继承父类的构造方法 若子类想使用父类的构造方法 必须在子类的构造方法中利用super来调用 且super必须是子类构造方法中的第一条语句 调用父类的构造函数 一般格式为 super paramlist 例4 3 利用supers操作父类的构造方法 classep4 3 student intnum Stringname ep4 3 student intnum Stringname this num num this name name System out println 姓名 name n学号 num classep4 3 univerextendsep4 3 student boolean婚否 ep4 3 univer intnum Stringname booleanb super num name 婚否 b System out println 婚否 婚否 classep4 3 publicstaticvoidmain Stringargs ep4 3 universtudent one newep4 3 univer 1234 小强 false 程序的运行结果如下所示 需要注意的是 若子类调用父类的构造方法 在子类的构造方法中省略掉super关键字 则系统默认有 super 即调用父类不带参数的构造方法 由于Java语言规定如果一个类中含有一个或多个构造方法 系统不提供默认的构造方法 不含参数的构造方法 所以当在父类中定义了多个构造方法时 应考虑包括一个不带参数的构造方法 以防止子类省略super关键字时出现错误 4 2抽象类和接口 Java语言中 用abstract关键字来修饰一个类时 这个类叫做抽象类 用abstract关键字来修饰一个方法时 这个方法叫做抽象方法 格式如下 abstractclassabstractClass 抽象类abstractreturnTypeabstractMethod paramlist 抽象方法 4 2 1抽象类 抽象类就是不能使用new方法进行实例化的类 即没有具体实例对象的类 抽象类有点类似 模板 的作用 目的是根据其格式来创建和修改新的类 对象不能由抽象类直接创建 只可以通过抽象类派生出新的子类 再由其子类来创建对象 在抽象类中的成员方法可以包括一般方法和抽象方法 抽象方法就是以abstract修饰的方法 这种方法只声明返回的数据类型 方法名称和所需的参数 没有方法体 也就是说抽象方法只需要声明而不需要实现 当一个方法为抽象方法时 意味着这个方法必须被子类的方法所重写 否则其子类的方法仍然是abstract的 抽象类中不一定包含抽象方法 但是包含抽象方法的类一定要被声明为抽象类 抽象类本身不具备实际的功能 只能用于派生其子类 而定义为抽象的方法必须在子类派生时被重写 抽象类中可以包含构造方法 但是构造方法不能被声明为抽象 一般来说 由于不能够用抽象类直接创建对象 因此在抽象类内定义构造方法是多余的 需要注意的是 抽象类不能用final来修饰 即一个类不能既是最终类又是抽象类 abstract不能与private static final native并列修饰同一个方法 例4 5 定义抽象类Animal 从抽象类派生子类Horse和Dog 实现父类的抽象方法 abstractclassep4 5 Animal 定义抽象类Stringstr ep4 5 Animal Strings 定义抽象类的一般方法str s abstractvoideat 定义抽象方法 classep4 5 Horseextendsep4 5 Animal 定义继承Animal的子类Stringstr ep4 5 Horse Strings super s 调用父类的构造方法 voideat 重写父类的抽象方法System out println 马吃草料 classep4 5 Dogextendsep4 5 Animal Stringstr ep4 5 Dog Strings super s voideat System out println 狗吃骨头 classep4 5 publicstaticvoidmain Stringargs ep4 5 HorseHorse1 newep4 5 Horse 马 ep4 5 DogDog1 newep4 5 Dog 狗 Horse1 eat Dog1 eat 4 2 2接口 接口是抽象类的一种 只包含常量和方法的定义 而没有变量和方法的实现 且其方法都是抽象方法 它的用处体现在下面几个方面 通过接口实现不相关类的相同行为 而无需考虑这些类之间的关系 通过接口指明多个类需要实现的方法 通过接口了解对象的交互界面 而无需了解对象所对应的类 4 2 3接口的定义 接口的定义包括接口声明和接口体 接口声明的格式如下 public interfaceinterfaceName extendslistOfSuperInterface extends子句与类声明的extends子句基本相同 不同的是一个接口可有多个父接口 用逗号隔开 而一个类只能有一个父类 接口体包括常量定义和方法定义 常量定义格式为 typeNAME value 该常量被实现该接口的多个类共享 具有public final static的属性 方法体定义格式为 具有public和abstract属性 returnTypemethodName paramlist 4 2 4接口的实现 在类的声明中用implements子句来表示一个类使用某个接口 在类体中可以使用接口中定义的常量 而且必须实现接口中定义的所有方法 一个类可以实现多个接口 在implements子句中用逗号分开 例4 6 一个接口实现的例子 interfaceep4 6 a 定义第1个接口doublepi 3 14 abstractdoublearea interfaceep4 6 b 定义第2个接口abstractvoidsetColor Stringc interfaceep4 6 cextendsep4 6 a ep4 6 b 接口的多重继承abstractvoidvolume classep4 6 Cylinderimplementsep4 6 c 以第3个接口实现类doubleradius intheight Stringcolor publicep4 6 Cylinder doubler inth radius r height h publicdoublearea 实现第1个接口的方法returnradius radius pi publicvoidsetColor Stringc 实现第2个接口的方法color c System out println 形状的颜色 color publicvoidvolume 实现第3个接口的方法System out println 圆柱体的体积 area height classep4 6 publicstaticvoidmain Stringargs ep4 6 CylinderOne newep4 6 Cylinder 3 0 5 One setColor 红色 One volume 4 3内部类 内部类是在一个类的内部嵌套定义的类 它可以是其它类的成员 也可以在一个语句块的内部定义 还可以在表达式内部匿名定义 4 3 1内部类的定义和使用 内部类有如下特性 一般用在定义它的类或语句块之内 在外部引用它时必须给出完整的名称 名字不能与包含它的类名相同 可以使用包含它的类的静态和实例成员变量 也可以使用它所在方法的局部变量 可以定义为abstract 可以声明为private或protected 若被声明为static 就变成了顶层类 不能再使用局部变量 若想在InnerClass中声明任何static成员 则该InnerClass必须声明为static 下面是一个说明内部类如何使用的例子 其中 定义了两个内部类 MouseMotionHandler和MouseEventHandler 分别用来处理鼠标移动事件和鼠标点按事件 例4 7 一个内部类如何使用的例子 importjava awt importjava awt event publicclassTwoListenInner privateFramef privateTextFieldtf publicstaticvoidmain Stringargs TwoListenInnerthat newTwoListenInner that go publicvoidgo f newFrame Twolistenersexample f add North newLabel Clickanddragthemouse tf newTextField 30 f add South tf f addMouseMotionListener newMouseMotionHandler f addMouseListener newMouseEventHandler f setSize 300 300 f setVisible true publicclassMouseMotionHandlerextendsMouseMotionAdapter publicvoidmouseDragged MouseEvente Strings Mousedragging X e getX Y e getY tf setText s publicclassMouseEventHandlerextendsMouseAdapter publicvoidmouseEntered MouseEvente Strings Themouseentered tf setText s publicvoidmouseExited MouseEvente Strings Themouseleftthebuilding tf setText s 4 3 2匿名类的定义和使用 匿名类是一种特殊的内部类 它是在一个表达式内部包含一个完整的类定义 当一个内部类的类声名只是在创建此类对象时用了一次 而且要产生的新类需继承于一个已有的父类或实现一个接口 才能考虑用匿名类 由于匿名类本身无名 因此它也就不存在构造方法 它需要显示地调用一个无参的父类的构造方法 并且重写父类的方法 所谓的匿名就是该类连名字都没有 只是显示地调用一个无参的父类的构造方法 4 4Class类 Class是java lang包中的类 该类的实例用来封装对象运行时的状态 当一个类被加载且创建对象时 和该类相关的一个类型为Class的对象就会自动创建 4 4 1获取类的有关信息 Class类本身不提供构造方法 不能用new运算符和构造方法创建一个Class对象 任何对象调用getClass 方法都可以获取和该对象相关的一个Class对象 这个Class对象调用如下的方法可以获取创建对象的类的有关信息 比如 类的名字 类中的方法名称 成员变量的名称等 常用方法如下所示 StringgetName 返回类的名字Constructor getDeclaredConstructor 返回类的全部构造方法Field getDeclaredFields 返回类的全部成员变量Method getDeclaredMethods 返回类的全部方法 例4 9 使用相应的Class对象列出全部成员变量和方法的名称 importjava lang reflect classRect doublewidth height area publicdoublegetArea area height width returnarea publicclassep4 9 publicstaticvoidmain Stringargs Rectrect newRect Classcs rect getClass StringclassName cs getName Constructor con cs getDeclaredConstructors Field field cs getDeclaredFields Method method cs getDeclaredMethods System out println 类的名字 className System out println 类中有如下的成员变量 for inti 0 i field length i System out println field i toString System out println 类中有如下的方法 for inti 0 i method length i System out println method i toString System out println 类中有如下的构造方法 for inti 0 i con length i System out println con i toString 4 4 2使用Class实例化一个对象 除了可以通过Class对象获取类的有关信息外 还可以使用Class对象得到一个类的实例 为了得到一个类的对象 先要得到一个和该类相关的Class对象 只要使用Class的类方法 publicstaticClassforName StringclassName throwClassNotFoundException可以返回一个和参数className指定的类相关的Class对象 再让这个对象Class对象调用 publicObjectnewInstance throwInstantiationException IllegalAccessException方法就可以得到一个className类的对象 需要注意的是 使用Class对象调用newInstance 方法实例化一个className类的对象时 className类必须有无参数的构造方法 例4 10 使用Class对象得到一个类的对象 classRectA doublewidth height area publicdoublegetArea area height width returnarea publicclassep4 10 publicstaticvoidmain Stringargs try Classcs Class forName RectA RectArect RectA cs newInstance rect width 100 rect height 200 System out println rect的面积 rect getArea catch Exceptione 4 5练习思考题 1 什么是继承 什么是多重继承和单继承 Java采用何种机制来实现多重继承 2 什么是隐藏 什么是重写 二者有何区别 3 子类会继承父类的所有方法和属性么

    注意事项

    本文(Java语言程序设计基础教程(继承、接口和内部类)ppt.ppt)为本站会员(nin****92)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    网站客服QQ:2881952447     

    copyright@ 2020-2024  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

    备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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