基本信息
文件名称:《Java语言程序设计》第4章 继承与多态-教学课件(非AI生成).ppt
文件大小:1 MB
总页数:83 页
更新时间:2025-05-16
总字数:约1.72万字
文档摘要

4.6多态publicclassCountPay{ privatestaticdoublecount; …… publicstaticvoiddoCount(Employeee){ count+=e.getIncome(); } ……}如果子类没有重写getIncome方法,有什么结果?执行Employee中的getIncome方法。*4.6多态因此,有必要强制规定所有职工子类都必须重写自己的getIncome方法。将父类中的getIncome()定义为抽象方法,所有继承Employee的类都必须实现getIncome方法。*4.7抽象类publicabstractclassEmployee{ privateStringname; privateintage; privatedoublesalary; …… abstractdoublegetIncome(); ……}Employee作为父类,本身不是具体的一种职工,定义getIncome方法是为了对子类起约束作用,对Employee本身没有实现的意义,所以不需要实现。*4.7抽象类光有方法类型、名称、参数而没有内容的方法叫抽象方法。包含抽象方法的类叫抽象类。定义抽象方法语法:abstract返回类型方法名(参数列表);声明抽象类语法:abstractclass{……}使用:父类中的抽象方法不能包含方法体,并需要在子类中重写,子类提供这种抽象方法的实现细节。*4.7抽象类抽象方法必须声明在抽象类中(包含抽象方法的一定是抽象类)抽象类可以不包含抽象方法。抽象类不能被实例化***构造方法和static方法不能是抽象的父类的抽象方法往往在子类中实现abstract*4.7抽象类publicclassRectangle{publicfloatwidth,height;Rectangle(floatwidth,floatheight){this.width=width;this.height=height;}publicdoublearea(){returnwidth*height;}}publicclassCircle{publicfloatr;Circle(floatr){this.r=r;}publicdoublearea(){return3.14*r*r;}}*假设有若干个Circle,以及若干个Rectangle,希望计算它们的总面积,直截了当的做法是将它们分别放到两个数组中,用两个循环,加上一个加法,这种做法是不漂亮的。如果还有其它形状:Triangle等,上述方法显得“累赘”。我们希望有一种统一的表示,例如用一个数组shape[],接受所有的形状,然后用:for(i=0;ishape.length;i++){area_total+=shape[i].area();}4.7抽象类*classRectangleextendsShape{……publicdoublearea(){returnwidth*height;}}classCircleextendsShape{……publicdoublearea(){return3.14*r*r;}}abstractclassShape{abstractdoublearea();}4.7抽象类*通过上面的例子我们可以看出,抽象类Shape是Circle和Rectangle的统一的接口。使利用Circle和Rectangle的对象变的更加方便。在例子中抽象类Shape被Circle和Rectangle继承,抽象类必须在被继承并其继承它的类不再是抽象类的时候才能被实例化,抽象方法必须被重写。4.7抽象类*4.8接口接口可以理解为一种特殊的抽象类,它只包含常量和方法的定义,而没有方法的实现。使用interface关键字定