Java语言程序设计基础教程课件(第4章)

Java语言程序设计基础教程课件(第4章)

ID:40230294

大小:148.50 KB

页数:54页

时间:2019-07-27

Java语言程序设计基础教程课件(第4章)_第1页
Java语言程序设计基础教程课件(第4章)_第2页
Java语言程序设计基础教程课件(第4章)_第3页
Java语言程序设计基础教程课件(第4章)_第4页
Java语言程序设计基础教程课件(第4章)_第5页
资源描述:

《Java语言程序设计基础教程课件(第4章)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第4章 继承、接口和内部类继承、超类和子类抽象类和接口内部类Class类4.1继承、超类和子类继承是一种由已有的类创建新类的机制。运用继承,可以先创建一个通用类,它定义一组相关属性的一般特性。该类可以具体类继承,每个具体类都增加一些自己特有的东西。被继承的类叫超类(superclass),继承超类的类叫子类(subclass)。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。Java不支持多重继承,即一个类从多个超类派生的能力。通过继承可实现代码复用

2、。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的4.1.1子类继承一个类,要用extends关键字指定要继承的父类。创建子类的一般格式为:classSubClass[extendsSuperClass]{…}classStudentsextendsPeople{}4.1.2子类的继承子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为。例如:classSuperClass{intx;…voidsetX(){x=0;}…}classSubCla

3、ssextendsSuperClass{intx;…voidsetX(){x=5;}…}隐藏了父类同名成员变量重写了父类的同名同参方法思考:1、在定义一个类中,当局部变量和成员变量同名时,会怎么样?如何使用同名成员变量?2、在定义一个类中,多次定义同名不同参的方法时,会怎么样?在这些方法中,如何使用前面被定义的同名不同参的方法?2、在定义一个子类时,当子类定义了和父类同名的成员变量和方法时,会怎么样?如何使用父类中同名的成员变量和方法?方法重写及重写规则子类定义了和父类同名、同参、同返回类型的方法,称为子类重写了

4、父类的方法规则:子方法的名称、参数类型及顺序、返回类型必须与重写方法相同不能降低的重写方法的访问性不能比重写方法抛出更多的异常4.1.3super关键字关键字super表示父类对象。在子类中使用super做前缀可以引用被子类隐藏的父类变量或被子类重写的父类方法子类不能继承父类的构造方法,但在子类可用super关键字调用父类的构造方法。此时必须是方法体中第一条语句。1.Super的使用方法访问父类被隐藏的成员变量super.variable;调用父类中被重写的方法super.Method([paramlist]);

5、在子类的构造方法中,调用父类的构造方法super([paramlist]);P86【例4-2】P87【例4-3】利用supers操作父类的构造方法。若子类在定义构造方法中,没有使用super调用父类的某个构造方法,则系统默认有“super()”,即调用父类不带参数的构造方法,产生一个调用父类构造函数的数据链。最终发生的是父类构造函数(可能几个)将在链中的任何子类构造函数前执行。Java规定如果在一个类中含有一个或多个构造方法,系统不提供默认的构造方法(不含参数的构造方法),所以当在父类中定义了多个构造方法时,应考

6、虑包括一个不带参数的构造方法,以防止子类省略super关键字时出现错误。对象的上转型对象假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用赋值给A类的对象时:Aa;Bb=newB();a=b;称这个A类对象:a,是子类对象b的上转型对象Aa=newB();对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原子类对象的一些属性和功能。对象的上转型对象子类对象子类新增的变量子类新增的方法子类重写或继承的变量子类重写或继承的方法如果子类重写了父类的某个方法后,对象的上转型对象调用这个方

7、法时,一定是调用了子类重写的方法。可以将对象的上转型对象再强制转换到原子类对象(下转换对象),这时,该子类对象又具备了子类所有属性和功能。class动物{voidcry(){}}class狗extends动物{voidcry(){System.out.println("汪汪.....");}}class猫extends动物{voidcry(){System.out.println("喵喵.....");}}classExample{publicstaticvoidmain(Stringargs[]){动物dong

8、wu;if(Math.random()>=0.5){dongwu=new狗();dongwu.cry();}else{dongwu=new猫();ongwu.cry();}}}多态性父类的某个方法被多个子类重写时,相同的调用(上转型对象的调用)可以产生各自不同的行为(结果)。动物dongwu1,dongwu2;dongwu1=new狗();dongwu2=new猫()do

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。