第4章 类的继承和接口的扩展.ppt_第1页
第4章 类的继承和接口的扩展.ppt_第2页
第4章 类的继承和接口的扩展.ppt_第3页
第4章 类的继承和接口的扩展.ppt_第4页
第4章 类的继承和接口的扩展.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4类继承和接口扩展,本章结构,类继承多级继承重写类方法final使用和抽象类对象类接口包本章中的问题,类继承,类继承是面向对象编程技术的基石,使程序员可以根据特定层次在Java中创建类,继承的类称为超类。继承超类的类在子类(subclass)子类中具有超类定义的所有实例变量和方法,但是,如果超类的成员变量或方法定义为private,则子类可以复盖子类无法直接访问基类的方法。如果您没有在子类中重写基类的方法,则可以直接在子类中调用基类的方法。4.1.1是创建子类的机制,继承是从现有类创建新类的机制。继承允许您创建具有公共属性的通用类,并基于该通用类创建具有特殊属性的新类。继承的类称为子类(su

2、bclass),继承的类称为超类(或超类,superclass)。直接或间接继承的类是父类。子类继承父类的状态和行为的同时,还可以修改父类的状态,重写父类的行为并添加新状态和行为。Java不支持多个继承。创建4.1.1子类,然后在类声明中添加extends子句以创建类子类。类子类extends SuperClass上述代码将子类声明为SuperClass的直接子类。如果超类是类的子类,则该子类也是该类的(间接)子类。子类可以继承父类的成员变量和方法。如果存在基本extends子句,则此类是java.lang.Object的子类。子类可以继承父类中访问权限设置为public、protected和

3、default的成员变量和方法。但是,不能继承具有private访问权限的成员变量和方法。创建4.1.1子类、创建4.1.1子类、创建4.1.1子类,MammalClass类具有DogClass和CatClass的相同属性,例如name、eyeColor和age。现在可以使用继承重建DogClass和CatClass。public class dog class extends mammal class boolean has tail;/name,eyeColor,age是父类中的public DogClass() /隐式调用super()name=chase;EyeColor=Black;

4、age=2;HasTail=true,创建4.1.1子类,示例4-1继承的简单示例class Father /父类private int moneyFloat weight,heightString headString speak(String s)return s;Class Son extends Father /子类String hand,foot、Weight、height、head、Speak();Hand,foot,5.1.1创建子类,示例4-1继承的简单示例public class test extend public static void main(string args)

5、son boy=newBoy.weight=120fBoy.height=1.8fBoy.head=一个头部;Boy.hand=两只手;Boy.foot=双脚;System.out.println(我是儿子);System.out.println(包括: boy.hand、boy.foot、boy.head、heavy.weight和high boy.weight,以上程序运行结果如下:我创建了儿子3360双手、双脚、头部、重量120.0、高度1.8、4 . 1 . 1 . 1 . 1子类,如果子类和父类不在同一包中,则子类可以将父类的protected,public modified成员变量

6、继承为子类的成员变量,父类的protected,public modified此外,如果子类和父类不在同一包中,则子类不能继承父类的default变量和default方法。,创建4.1.1子类,示例4-2另一个包中的类的简单示例/house hold . Java packagexing . house;Public class HouseHold /主页类protected String address/地址public String surnname/姓String givenname/名称public house hold(string add)address=add;protected

7、 string get address()return address;void set money(string newadd)address=newadd;void set address(string add)address=add;创建4.1.1子类,/Mikey . Java 3360 package xing . friend;import xing . house . house hold;public class Mikey extends house hold public Mikey()super(star flight street 110);public static

8、void main(string args)Mikey Mikey=new Mikey();/Mikey . givenname= Johnson ;/无效的mikey.surnname=Math/合法。Mikey . address=star flight street 110;/legal . string m=Mikey . get address();/合法/Mikey . set address(star flight street 110);/非法。system . out . print ln(Mikey . surn name:m);创建4.1.1子类,/Mikey . Jav

9、a 3360 package xing . friend;import xing . house . house hold;public class Mikey extends house hold public Mikey()super(star flight street 110);public static void main(string args)Mikey Mikey=new Mikey();/Mikey . givenname= Johnson ;/无效的mikey.surnname=Math/合法。Mikey . address=star flight street 110;/

10、legal . string m=Mikey . get address();/合法/Mikey . set address(star flight street 110);/非法。system . out . print ln(Mikey . surn name:m);4.1.1子类的创建、程序编译和执行过程如下:关键字super,在很多情况下,必须保留父类的实现详细信息,并且子类访问这些详细信息时,必须实现父类的闪回形状。Java是使用super关键字实现此功能的完全面向对象的语言。Super的作用主要有两种。调用超类的构造函数访问子类的成员隐藏的超类成员。在Java中,同一超类可以有多个

11、子类,继承的super对象,类的继承,超类、子类、超类的变量和方法调用,子类的变量和方法调用,继承的构造函数,类的继承,Public class cartoon extends drawing cartingpublic static void main(string args)cartoon c=new cartoon();class art()system . out . print ln(art constructor);class drawing extends artdrawing()system . out . print ln(drawing constructor);art c

12、onstructor drawing constructor cartoon constructor,子类的配置方法必须调用父类的配置方法,class drawing extends art/* drawing()system。*/、art constructor cartoon constructor、public class cartoon extends drawing cartoon()super();system . out . print ln(cartoon constructor);public static void main(string args)cartoon c=ne

13、w cartoon();浅谈继承的配置方法、类继承、public class chess extends board gamechess()super(3)。system . out . print ln(cartoon constructor);public static void main(string args)chess c=new chess();class game game(int I)system . out . print ln( game constructor );class board game extends game board game(int I)super(I

14、);system . out . print ln( board game constructor );子类的构造方法必须以任何形式调用父类的构造方法。否则,编译将出错,并且继承的配置方法、类的继承、类a (inti)、类b extends a b (string s)、b(string s)super();4.1.4多子类继承相同的父类示例4.5,4.2多级继承;使用Java,多级继承可以通过从类层次结构继承的级别关系调用,并且必须是子类构造函数的第一个执行语句(从父类到子类super关键字)。无论是否使用super关键字,此顺序都不会更改,如果子类的构造函数中没有显式调用super,则基类

15、或非参数构造函数将在父类中运行。请参见示例4.6和示例4.7,4.3重写类方法。在子类中,可以重写类方法以遮盖超类的方法。如果子类中的方法之一与其超类中的方法具有相同的方法名称、类型和参数,则子类中的方法将复盖超类中的方法。在子类中调用在子类中复盖的方法时,在超类中定义的方法将隐藏。示例4.8和示例4.9,4.1.2引用成员变量的排除和方法复盖,如果在子类中定义的成员变量与父类中的成员变量同名,则称为子类的成员变量隐藏父类中的成员变量。如果方法在子类中定义,并且其方法名称、返回类型、参数数和类型与父类中的方法完全相同,则父类中的方法将隐藏。据说,此时重写了父类的方法。子类可以通过复盖成员变量的

16、隐藏和方法将父类的状态和行为更改为自己的状态和行为。4.1.2成员变量的排除和方法重写,例如类超类/超类inty:Void setY()y=0;class sub class extends super class int y;/父类变量y隐藏的void setY() /父类的方法setY()y=1;4.4 final允许在继承中使用final执行两个功能。也就是说,如果禁止类重写方法以防止类继承,则final关键字,1)如果final touch up成员变量之前有final touch up,则此成员变量将成为常量,一旦分配了值,就不能在程序的其它地方修改该值。Final type var

17、iableName定义为。例如,class consttime express final int max hour=23;Final int MaxMinute=59Final int MaxSecond=59,final关键字,2)final touch up方法的final修饰符指示不能用子类复盖方法。具有Final修饰符的方法称为最终方法。除非将Java中的方法描述为最终方法,否则可以复盖Java中的方法。Java之所以这样规定,主要是因为Java的纯面向对象特性,使用叠加作为象对象的重要特征实现了最大限度的实现。有时,将方法声明为最终方法会增强代码的安全性。使用方式如下:Final returntype method name(paramlist)示例:final int getlength (strings),final关键字,3)不能继承final类fi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论