《【精品】Java面向对象程序设计与系统开发第3章面向对象设计思想精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】Java面向对象程序设计与系统开发第3章面向对象设计思想精品ppt课件.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java面向对象程序设计与系统开发第3章 面向对象设计思想驱动任任务务一一 创建一个抽象类Animal,它包含一个abstract的sound()方法;派生一个子类Dog,实现父类抽象方法sound();创建子类Dog对象,然后调用它的sound()方法。2目目标及知及知识点点定义和使用抽象类定义和使用抽象类2final关关键字的使用字的使用3抽象类的概念抽象类的概念1 13抽象抽象类如果一个类中没有包含足够的信息来描绘一个具如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类体的对象,这样的类就是抽象类定义一个抽象类的格式如下 abstractclassAbstractCl
2、assNamepublicabstractclassShapepublicabstractdoublearea();/抽象方法抽象方法publicabstractdoublevolume();/抽象方法抽象方法 当一个类被定义成当一个类被定义成abstract类时,表示一个抽象的概念,它不能用类时,表示一个抽象的概念,它不能用new关键字关键字实例化对象,例如上面定义的实例化对象,例如上面定义的Shape类就是一个抽象类,只有被继承并在子类类就是一个抽象类,只有被继承并在子类中重写其抽象方法,它才有意义。中重写其抽象方法,它才有意义。4【例例3-1】v定义一个代表形状的抽象类,并派生出圆柱体类
3、和长方体类,计算底面半径为2高为3的圆柱体体积和长、宽、高分别为3、2、4的长方体体积。/定定义一个形状抽象一个形状抽象类abstractclassShapedoubleradius,length,width,height;abstractdoublevol();/求体求体积的抽象方法的抽象方法Shape(doubler,doubleh)/对半径和高进行初始化的构造方法对半径和高进行初始化的构造方法radius=r;height=h;Shape(doublel,doublew,doubleh)/对长宽高进行初始化的构造方法对长宽高进行初始化的构造方法length=l;width=w;heigh
4、t=h;/*圆柱体柱体类*/classCircleextendsShapeCircle(doubler,doubleh)super(r,h);doublevol()/重写父重写父类抽象方法抽象方法return(3.1416*radius*radius*height);/*长方体方体类*/classRectangleextendsShapeRectangle(doublel,doublew,doubleh)super(l,w,h);doublevol()/重写父重写父类抽象方法抽象方法return(length*width*height);/*主主类*/publicclassAbstractCl
5、assDemopublicstaticvoidmain(Stringargs)Circlec=newCircle(2,3);Rectangler=newRectangle(3,2,4);System.out.println(圆柱体体柱体体积=+c.vol();System.out.println(长方体体方体体积=+r.vol();结果:果:圆柱体体积圆柱体体积37.6992长方体体积长方体体积24.0【思考思考】abstract修修饰的的类一定有一定有abstract修修饰的方法的方法吗?5【例例3-2】使用使用final方法的例子方法的例子classTest1publicvoidf1()S
6、ystem.out.println(f1);/无法被子无法被子类覆盖的方法覆盖的方法publicfinalvoidf2()System.out.println(f2);publicclassTest2extendsTest1publicvoidf1()System.out.println(Test1父父类方法方法f1被覆盖被覆盖!);publicstaticvoidmain(Stringargs)Test2t=newTest2();t.f1();t.f2();/调用从父用从父类继承承过来的来的final方法方法结果:果:Test1父父类方法方法f1被覆盖被覆盖!f28Java面向对象软件开发面
7、向对象软件开发任任务实现123分析类及关系分析类及关系定义抽象类定义抽象类AnimalDog类利用构造方法利用构造方法为type属性属性赋值45Dog类实现Animal的的sound()main方法方法进行行测试9驱动任任务务二二 有一个接口AddImp规定了有求和的方法sum();另外一个SubImp接口规定了有减法运算的方法subtract();再声明一个接口Calculatable继承于以上两个接口。创建Calculator类实现接口Calculatable,并生成对象测试该对象的加减功能。10目目标及知及知识点点接口的实现接口的实现2接口的继承接口的继承3多接口多接口4接口的定义接口的
8、定义1 111接口的定接口的定义在Java语言中,用关键字interface来定义接口。接口与类有相似的结构,其定义格式如下:修修饰符符interface接口名接口名extends父接口名父接口名/接口体接口体12接口的定接口的定义例例3-3InterfaceObjectAreadoublePI=3.14;doublearea(doubler);注意:注意:接口和普通类不一样的是它的方法默认是抽象和公共的,接口和普通类不一样的是它的方法默认是抽象和公共的,属性默认是常量,静态的和公共的属性默认是常量,静态的和公共的13接口的接口的实现 若一个类想统一在某个接口的规范下,想具有这个接口的”身份”
9、,就需要实现这个接口。格式如下:Class类名名implements接口名接口名14接口的接口的实现例例3-4classCircleimplementsObjectAreapublicdoublearea(doubler)/重写重写returnPI*r*r;注意:注意:若实现接口的类不是抽象类,则该类必须实现指定接口的若实现接口的类不是抽象类,则该类必须实现指定接口的所有抽象方法。方法头部应该与接口中的定义完全一致,即所有抽象方法。方法头部应该与接口中的定义完全一致,即有完全相同的方法名、参数表和返回值。有完全相同的方法名、参数表和返回值。15接口接口继承承 接口也可以通过关键字extends
10、继承其他接口。子接口将继承父接口中所有的常量和抽象方法。Interface接口名接口名extends接口名接口名16接口接口继承承例例3-5:interfaceAStringa=接口接口A中常量中常量;voidshowA();interfaceBextendsAStringb=接口接口B中常量中常量;voidshowB();interfaceCextendsBStringc=接口接口C中常量中常量;voidshowC();classInterfaceABCimplementsCpublicvoidshowA()/重写重写A接口中的方法接口中的方法System.out.println(a);pu
11、blicvoidshowB()/重写重写B接口中的方法接口中的方法System.out.println(b);publicvoidshowC()/重写重写C接口中的方法接口中的方法System.out.println(c);17实现多接口一个一个类可以同可以同时实现多个接口,接口名之多个接口,接口名之间用逗号用逗号间隔。隔。例例3-6:interfaceAvoidmeth1();interfaceBvoidmeth2();classMyClassimplementsA,Bpublicvoidmeth1()System.out.println(Implementmeth1().);publicvoidmeth2()System.out.println(Implementmeth2().);18任任务实现123分析接口及类关系分析接口及类关系创建接口创建接口实现接口实现接口45创建对象创建对象调用对象中的方法完成具体功能调用对象中的方法完成具体功能19课堂堂总结v抽象类的定义和继承v接口的定义和实现20