《最新Java面向对象程序设计与系统开发第3章面向对象设计思想(共21张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新Java面向对象程序设计与系统开发第3章面向对象设计思想(共21张PPT课件).pptx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计与面向对象程序设计与系统系统(xtng)开发开发第3章 面向对象设计(shj)思想 第一页,共二十一页。2驱动驱动(q dn)任务一任务一 创建一个抽象类Animal,它包含一个abstract的sound()方法;派生一个子类Dog,实现父类抽象(chuxing)方法sound();创建子类Dog对象,然后调用它的sound()方法。第二页,共二十一页。3目标目标(mbio)及知识点及知识点定义和使用抽象类定义和使用抽象类2final关关键键字的使用字的使用3抽象类的概念抽象类的概念1 1第三页,共二十一页。4抽象类抽象类 如果一个类中没有包含足够的信息来描绘一个具如果一个类
2、中没有包含足够的信息来描绘一个具体的对象体的对象(duxing),这样的类就是抽象类,这样的类就是抽象类 定义一个抽象类的格式(g shi)如下 abstract class AbstractClassNamepublic abstract class Shapepublic abstract double area();/抽象抽象(chuxing)方法方法public abstract double volume();/抽象方法抽象方法 当一个类被定义成当一个类被定义成abstract类时,表示一个抽象的概念,它不能用类时,表示一个抽象的概念,它不能用new关键字关键字实例化对象,例如上面定
3、义的实例化对象,例如上面定义的Shape类就是一个抽象类,只有被继承并在子类类就是一个抽象类,只有被继承并在子类中重写其抽象方法,它才有意义。中重写其抽象方法,它才有意义。 第四页,共二十一页。5【例例3-1】 v 定义(dngy)一个代表形状的抽象类,并派生出圆柱体类和长方体类,计算底面半径为2高为3的圆柱体体积和长、宽、高分别为3、2、4的长方体体积。 /定定义义一个形状抽象一个形状抽象类类abstract class Shapedouble radius,length,width,height;abstract double vol();/求体求体积积的抽象方法的抽象方法(fngf)Sh
4、ape(double r,double h)/对半径和高进行初始化的构造方法对半径和高进行初始化的构造方法radius = r;height = h;Shape(double l,double w,double h)/对长宽高进行初始化的构造方法对长宽高进行初始化的构造方法length = l;width = w;height = h;/*圆圆柱体柱体类类*/class Circle extends ShapeCircle(double r,double h)super(r,h);double vol()/重写父重写父类类抽象抽象(chuxing)方法方法return(3.1416*radiu
5、s*radius*height); /*长长方体方体类类*/class Rectangle extends ShapeRectangle(double l,double w,double h)super(l,w,h);double vol()/重写父重写父类类抽象方法抽象方法return (length*width*height);/*主主类类*/public class AbstractClassDemo public static void main(String args) Circle c = new Circle(2,3); Rectangle r = new Rectangle(3
6、,2,4); System.out.println(圆圆柱体体柱体体积积 = + c.vol(); System.out.println(长长方体体方体体积积 = + r.vol();结结果:果:圆柱体体积圆柱体体积37.6992长方体体积长方体体积24.0【 【思考思考】 】abstract修修饰饰的的类类一定有一定有abstract修修饰饰的方法的方法吗吗?第五页,共二十一页。Java面向对象软件开发6最终(zu zhn)类-final类 有一种类有一种类(zhngli)是不能派生出子类的,我们叫这种类是不能派生出子类的,我们叫这种类(zhngli)为最为最终类。即我们用终类。即我们用fi
7、nal来修饰的类。来修饰的类。public final class Test1 第六页,共二十一页。Java面向对象软件开发7最终(zu zhn)类-final类 如果一个类不允许其子类覆盖某个方法,则可以如果一个类不允许其子类覆盖某个方法,则可以(ky)把这个把这个方法声明为方法声明为final方法方法 public final void f2() System.out.println(f2);第七页,共二十一页。Java面向对象软件开发8【例例3-2】 使用使用final方法方法(fngf)的的例子例子class Test1 public void f1() System.out.prin
8、tln(f1);/ 无法无法(wf)被子被子类类覆盖的方法覆盖的方法public final void f2() System.out.println(f2);public class Test2 extends Test1public void f1() System.out.println(Test1父父类类方法方法f1被覆盖被覆盖(fgi)!);public static void main(String args) Test2 t = new Test2();t.f1();t.f2(); / 调调用从父用从父类继类继承承过过来的来的final方法方法结结果:果:Test1父父类类方法方
9、法f1被覆盖被覆盖!f2第八页,共二十一页。9任务任务(rn wu)实现实现123分析分析(fnx)类及关系类及关系 定义定义(dngy)抽象类抽象类Animal Dog类类利用构造方法利用构造方法为为type属性属性赋值赋值 45Dog类实现类实现Animal的的sound() main方法方法进进行行测试测试 第九页,共二十一页。10驱动驱动(q dn)任务任务二二 有一个接口AddImp规定了有求和的方法sum();另外一个SubImp接口规定了有减法运算的方法subtract();再声明一个接口Calculatable继承于以上两个(lin )接口。创建Calculator类实现接口C
10、alculatable,并生成对象测试该对象的加减功能。第十页,共二十一页。11目标目标(mbio)及知识点及知识点接口的实现接口的实现 2接口的继承接口的继承 3多接口多接口4接口的定义接口的定义1 1第十一页,共二十一页。12接口接口(ji ku)的定义的定义在Java语言中,用关键字interface来定义接口。接口与类有相似(xin s)的结构,其定义格式如下:修修饰饰符符 interface 接口接口(ji ku)名名 extends父接口名父接口名/接口体接口体 第十二页,共二十一页。13接口接口(ji ku)的定义的定义例例3-3Interface ObjectArea doub
11、le PI =3.14; double area(double r); 注意:注意:接口和普通接口和普通(ptng)(ptng)类不一样的是它的方法默认是抽象和公共的,类不一样的是它的方法默认是抽象和公共的,属性默认是常量,静态的和公共的属性默认是常量,静态的和公共的第十三页,共二十一页。14接口接口(ji ku)的实现的实现 若一个类想统一在某个接口的规范下,想具有(jyu)这个接口的”身份”,就需要实现这个接口。格式如下:Class 类类名名(li mn) implements 接口名接口名第十四页,共二十一页。接口接口(ji ku)的实现的实现15例例3-4class Circle im
12、plements ObjectAreapublic double area(double r)/重写重写return PI*r*r;注意:注意:若实现接口的类不是抽象类,则该类必须实现指定接口的若实现接口的类不是抽象类,则该类必须实现指定接口的所有抽象方法。方法头部应该所有抽象方法。方法头部应该(ynggi)与接口中的定义完全一致,即与接口中的定义完全一致,即有完全相同的方法名、参数表和返回值。有完全相同的方法名、参数表和返回值。第十五页,共二十一页。16接口接口(ji ku)继承继承 接口(ji ku)也可以通过关键字extends继承其他接口。子接口将继承父接口中所有的常量和抽象方法。In
13、terface 接口接口(ji ku)名名 extends 接口名接口名 第十六页,共二十一页。接口接口(ji ku)继承继承17例例3-5:interface AString a = 接口接口(ji ku)A中常量中常量;void showA(); interface B extends AString b = 接口接口B中常量中常量;void showB();interface C extends BString c = 接口接口(ji ku)C中常量中常量;void showC(); class InterfaceABC implements Cpublic void showA()/重
14、写重写A接口中的方法接口中的方法System.out.println(a);public void showB()/重写重写B接口中的方法接口中的方法System.out.println(b);public void showC()/重写重写C接口中的方法接口中的方法System.out.println(c);第十七页,共二十一页。实现(shxin)多接口18一个一个类类可以同可以同时实现时实现(shxin)多个接口,接口名之多个接口,接口名之间间用逗号用逗号间间隔。隔。例例3-6:interface A void meth1(); interface B void meth2();class
15、 MyClass implements A,B public void meth1() System.out.println(Implement meth1().); public void meth2() System.out.println(Implement meth2().); 第十八页,共二十一页。19任务任务(rn wu)实现实现123分析分析(fnx)接口及类关系接口及类关系创建创建(chungjin)接口接口实现接口实现接口45创建对象创建对象调用对象中的方法完成具体功能调用对象中的方法完成具体功能第十九页,共二十一页。20课堂课堂(ktng)总结总结 v 抽象类的定义和继承v 接口(ji ku)的定义和实现第二十页,共二十一页。内容(nirng)总结面向对象程序设计与系统开发。double radius,length,width,height。/*。/*。double vol()/重写父类抽象(chuxing)方法。return(3.1416*radius*radius*height)。super(l,w,h)。return (length*width*height)。System.out.println(Test1父类方法f1被覆盖。接口的定义和实现第二十一页,共二十一页。