欢迎来到天天文库
浏览记录
ID:46570242
大小:328.50 KB
页数:38页
时间:2019-11-25
《第08章 继承和多态》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8章继承和多态学习目标利用继承性由父类创建子类使用关键字super调用父类的构造方法和方法在子类中覆盖方法了解Object类的有用方法理解多态性、动态绑定和一般程序设计描述转换并理解显式向下转换的必要性理解隐藏数据域和静态方法的作用修饰符protectedfinal用于修饰常量、方法和类初始化模块和静态初始化块2面向对象技术8.1引言在面向对象程序设计中,可以从已有的类派生出新类,称为继承(inheritance).事实上,Java程序中的每一个类者显式或隐式的派生自一个已存在的类.没有指明来源的类隐含由java.lang.Object派生.java.lang.Objec
2、t类是一个特殊的类,是Java程序中所有类的公共起源,它自身没有继承其它类.3面向对象技术8.2父类和子类C2称为:子类(childclass)、次类(subclass)、扩展类(extendclass)或派生类(derivedclass).C1称为:父类(parentclass)、超类(superclass)或基类(baseclass)定义:设类C2由类C1派生而来,则:Java中类继承的语法形式:修饰符class子类名extends父类名{……}Java只支持单继承,即一个子类只能继承一个父类.4面向对象技术8.2父类和子类子类可以从其父类中继承可访问的数据域和方法,也
3、可以添加新的数据域和新方法.父类子类继承例:右图中子类Cylinder继承了父类Circle的可见的方法.5面向对象技术publicclassCircle{privatedoubleradius=1.0;publicCircle(){radius=1.0;}publicCircle(doubleradius){this.radius=radius;}publicdoublegetRadius(){returnradius;}publicvoidsetRadius(doubleradius){this.radius=radius;}publicdoublefindArea()
4、{returnradius*radius*3.14159;}}8.2父类和子类父类Circle6面向对象技术8.2父类和子类publicclassCylinderextendsCircle{privatedoublelength=1.0;publicdoublegetLength(){returnlength;}publicvoidsetLength(doublelength){this.length=length;}publicdoublefindVolume(){returnfindArea()*length;}}子类Cylinder7面向对象技术8.2父类和子类pub
5、licclassTestCylinder{publicstaticvoidmain(String[]args){Cylindercylinder=newCylinder();System.out.println(“长度=”+cylinder.getLength());System.out.println(“半径=”+cylinder.getRadius());System.out.println(“体积=”+cylinder.findVolume());System.out.println(“面积=”+cylinder.findArea());}}长度=1.0半径=1.0体
6、积=3.14159面积=3.14159输出结果:8面向对象技术8.3关键字super调用父类的构造方法调用父类的方法关键字super指向使用它的类的父类,主要有2种用途:9面向对象技术8.3.1调用父类的构造方法子类不能继承父类的构造方法;但在子类的构造方法中必须调用父类的构造方法,调用方式为:super();//调用父类无参构造方法super(参数);//调用父类中与参数匹配的构造方法调用父类构造方法的语句必须出现在子类构造方法的第一句.10面向对象技术8.3.2构造方法链构造方法必须调用其父类的构造方法(super);同时可以调用本类中重载的其它构造方法(this).如
7、果它们没有被显式调用,则编译器把super()作为构造方法的第一条入语句.publicCylinder(){}publicCylinder(){super();}publicA(doubled){//语句}publicA(doubled){super();//语句}等价于等价于例如:11面向对象技术8.3.2构造方法链构造一个类的实例时,会沿着继承链依次调用所有父类的构造方法,称为构造方法链.C1C2Object…C3执行:newC1();12面向对象技术8.3.2构造方法链classPerson{publicPe
此文档下载收益归作者所有