继承性和多态性.ppt
《继承性和多态性.ppt》由会员分享,可在线阅读,更多相关《继承性和多态性.ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下一页上一页返回开始继承性和多态性 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望下一页上一页返回开始继承性和多态性2主要内容主要内容n4.1 继承性n派生类的定义nsuper关键字nprotected和final关键字n4.2 多态性n4.3 抽象类和接口n抽象类n接口n4.4 初始化块下一页上一页返回开始继承性和多态性34.1 继承性继承性类具有继承性,子子类对父父类的的继承关系承关系体现了特殊和一般的关系。通过继承可以更有效地组织程序结构,明确类间关系,并充
2、分利用已有的类来完成更复杂、深入的开发。Java中的所有类都是java.lang.Object类的子类。4.1.1 派生派生类的定的定义nJava语言中派生类的定义格式如下:class class extendsextends 下一页上一页返回开始继承性和多态性4继承性继承性n示例:参看例4.1/Cylinder1.javapublic class Cylinder1 extends Circle private double length=1;/新增的数据成员 public double getLength()return length;public void setLength(doubl
3、e length)this.length=length;public double findVolume()/返回圆柱体的体积 return findArea()*length;/findArea()是从基类Circle继承下来的方法 public String toString()/覆盖Object类中的toString()方法 return(圆柱体的高为:+getLength()+圆柱体的半径为:+super.getRadius();/TestCylinder1.javapublic class TestCylinder1public static void main(Stringargs
4、)Cylinder1 cylinder1=new Cylinder1();System.out.println(cylinder1.toString();System.out.println(圆柱体的体积为:+cylinder1.findVolume();下一页上一页返回开始继承性和多态性54.1.2 super关键字关键字1.数据成员的隐藏n数据成员的隐藏是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员,即子类拥有了两个相同名字的数据成员,一个是继承父类的,另一个是自己定义的。n当子类引用这个通明的数据成员时,默认操作时他自己定义的数据成员,父类那里继承来的数据成员被隐藏
5、隐藏。n当子类要操作继承自父类的同名数据成员时,可使用关键字super引导。下一页上一页返回开始继承性和多态性6super关键字关键字2.成员方法的覆盖n子类可以重新定义与父类格式完全相同(包括方法名、方法形参的个数和类型、方法返回值的类型)的成员方法,实现对父类方法的覆盖。n只有当实例方法能被访问时,才能进行方法覆盖。私有方法私有方法不能被覆盖.n静静态方法方法(类方法)能被继承,但不能被覆盖。n子类在重新定义父类已有的方法时,应保持与父类完全相同相同的方法名、返回的方法名、返回值类型和参数列表型和参数列表,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。下一页上一页返回
6、开始继承性和多态性7super关键字关键字3.super关键字super表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。super的使用方法有三种:(1)访问直接父类隐藏的数据成员,其使用形式如下:super.数据成员(2)调用直接父类中被覆盖的成员方法,其使用形式如下:super.成员方法(参数)(3)调用直接父类的构造方法,其使用形式如下:super(参数)下一页上一页返回开始继承性和多态性8super关键字关键字示例:参看例4.2public class Cylinder2 extends Circle private double length;public Cylin
7、der2()super();length=1.0;public Cylinder2(double radius,double length)super(radius);/调用父类的构造方法 this.length=length;public double getLength()return length;public void setLength(double length)this.length=length;public double findArea()/覆盖父类的方法,求圆柱体的表面积 return 2*super.findArea()+2*getRadius()*Math.PI*le
8、ngth;public double findVolume()return super.findArea()*length;/此处的super不能省略 public String toString()/覆盖Object类的toString()方法 return 圆柱体的高度为:+length+半径为:+getRadius();/TestCylinder2.javapublic class TestCylinder2public static void main(Stringargs)Cylinder2 cylinder2=new Cylinder2(2,4);System.out.printl
9、n(cylinder2.toString();System.out.println(圆柱体的表面积为:+cylinder2.findArea();System.out.println(圆柱体的体积为:+cylinder2.findVolume();下一页上一页返回开始继承性和多态性94.1.3 protected和和final关键字关键字1.protected关键字用protected修饰的成员变量可以被三种类所引:n该类自身n与它在同一个包中的其它类及在n其它包中的该类的子类2.final关键字n使用final关键字可以定义常量。n定义类时,在class关键字前加关键字final,表示此类是
10、最终类,不能被其它类继承,不能做父类。n用final修饰成员方法,表示此方法不能被它的子类覆盖。3.native关键字(略)native修饰的方法称为本地方法,此方法使用的目的是为了将其它语言(例如,C、C+、FORTRAN、汇编等)嵌入到Java语言中。这样可以充分利用已经存在的其它语言的程序功能模块,避免重复编程。下一页上一页返回开始继承性和多态性104.2 多态性多态性n多态是面向对象程序设计语言的一个重要特性,在Java中,可以在同一类或不同类中定义名称相同但是操作不同的多个方法,多态性指的是运行时判断应该执行哪个方法代码的能力,这种能力也叫动态绑定。n在Java语言中,多态性分为编译
11、时多多态性性和运行运行时多多态性性。n编译时的多的多态性性是通过方法重载实现的,Java虚拟机根据传递给方法的参数个数和类型决定调用哪个重载方法。n运行运行时的多的多态性性是Java多态性的最重要的体现,在Java语言的继承关系中,子类对象与父类对象之间有一个重要特性:在任何需要父类对象的地方,都可以使用子类对象来代替,即子类对象可以作为父类对象来使用。一个对象可以通过引用子类的实例来调用子类的方法,通常,方法在父类中定义,在子类中覆盖,子类中调用哪个方法是在运行时决定的,取决于对象的类型,称为运行时的多态性。【JAVA最重要的特性】下一页上一页返回开始继承性和多态性11多态性多态性/Mana
12、gerTest.java 多态性应用举例import java.util.*;public class ManagerTest public static void main(String args)Manager boss=new Manager(王明,8000);/创建一个经理并设置他的奖金 boss.setBonus(500);Employee staff=new Employee3;/建立员工数组和经理一起填充 staff0=boss;/子类对象赋给父类对象 staff1=new Employee(张鹏,5000);staff2=new Employee(李丽,6000);for(in
13、t i=0;i staff.length;i+)/打印所有员工信息 Employee e=staffi;System.out.println(name=+e.getName()+,salary=+e.getSalary();class Employee public Employee(String n,double s)name=n;salary=s;public String getName()return name;public double getSalary()return salary;private String name;private double salary;class M
14、anager extends Employee public Manager(String n,double s)super(n,s);bonus=0;public double getSalary()double baseSalary=super.getSalary();return baseSalary+bonus;public void setBonus(double b)bonus=b;private double bonus;下一页上一页返回开始继承性和多态性124.3 抽象类和接口抽象类和接口 抽象类体现数据抽象的思想,是实现程序多态性的一种手段。接口则是Java中实现多重继承的唯
15、一途径。4.3.1 抽象抽象类n抽象类的作用在于将许多有关的类组织在一起,提供一个公共的类,即抽象类,而那些被它组织在一起的具体的类做为它的子类由它派生出来。n定义一个抽象类的格式如下:abstract class abstractClass/*类定义体*/n抽象方法是指在返回值类型前加上abstract关键字,且没有方法体。格式如下:abstract();n示例:参看例4.4下一页上一页返回开始继承性和多态性13抽象类/GeometricObject.java 抽象类几何图形类的定义abstract class GeometricObject public abstract double f
16、indArea();/抽象方法 public abstract double findPerimeter();/抽象方法/Circle.java 定义抽象类的派生类Circle类class Circle extends GeometricObject private double radius=1.0;public double findArea()/具体类实现父类的所有抽象方法 return radius*radius*Math.PI;public double findPerimeter()/具体类实现父类的所有抽象方法 return 2*radius*Math.PI;/Rectangle
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 继承 多态性
限制150内