【文档说明】Java面向对象程序设计与系统开发第3章--面向对象设计思想.ppt,共(20)页,1.299 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2310.html
以下为本文档部分文字说明:
面向对象程序设计与系统开发第3章面向对象设计思想2驱动任务一创建一个抽象类Animal,它包含一个abstract的sound()方法;派生一个子类Dog,实现父类抽象方法sound();创建子类Dog对象,然后调用它的sound()方法。3目标及
知识点定义和使用抽象类2final关键字的使用3抽象类的概念14抽象类如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类定义一个抽象类的格式如下abstractclassAbstractClassName{……}publicabstractclassShape
{publicabstractdoublearea();//抽象方法publicabstractdoublevolume();//抽象方法}当一个类被定义成abstract类时,表示一个抽象的概念,它不能用new关键字实例化对象,例如上面定义的Shape
类就是一个抽象类,只有被继承并在子类中重写其抽象方法,它才有意义。5【例3-1】❖定义一个代表形状的抽象类,并派生出圆柱体类和长方体类,计算底面半径为2高为3的圆柱体体积和长、宽、高分别为3、2、4的长方体体积。//定义一个形状抽象类abstractclassShape{doubl
eradius,length,width,height;abstractdoublevol();//求体积的抽象方法Shape(doubler,doubleh){//对半径和高进行初始化的构造方法radius=r;height=h;}Sh
ape(doublel,doublew,doubleh){//对长宽高进行初始化的构造方法length=l;width=w;height=h;}}/***圆柱体类*/classCircleextendsSh
ape{Circle(doubler,doubleh){super(r,h);}doublevol(){//重写父类抽象方法return(3.1416*radius*radius*height);}}/***长方体类*/classRectangleextendsS
hape{Rectangle(doublel,doublew,doubleh){super(l,w,h);}doublevol(){//重写父类抽象方法return(length*width*height);}}/***主类*/publicclassAbstractClassDemo{
publicstaticvoidmain(String[]args){Circlec=newCircle(2,3);Rectangler=newRectangle(3,2,4);System.out.pr
intln("圆柱体体积="+c.vol());System.out.println("长方体体积="+r.vol());}}结果:圆柱体体积=37.6992长方体体积=24.0【思考】abstract修饰的类一定有abstra
ct修饰的方法吗?Java面向对象软件开发6最终类-------final类有一种类是不能派生出子类的,我们叫这种类为最终类。即我们用final来修饰的类。publicfinalclassTest1{}Java面向对象软件开发7最终类-------final类如果一个类不允许其
子类覆盖某个方法,则可以把这个方法声明为final方法publicfinalvoidf2(){System.out.println("f2");}Java面向对象软件开发8【例3-2】使用final方法的例子classTest1{publicvoidf1(){Sy
stem.out.println("f1");}//无法被子类覆盖的方法publicfinalvoidf2(){System.out.println("f2");}}publicclassTest2exten
dsTest1{publicvoidf1(){System.out.println("Test1父类方法f1被覆盖!");}publicstaticvoidmain(String[]args){Test2t=newT
est2();t.f1();t.f2();//调用从父类继承过来的final方法}}结果:Test1父类方法f1被覆盖!f29任务实现123分析类及关系定义抽象类AnimalDog类利用构造方法为type属性赋值45Dog类实现Animal的so
und()main方法进行测试10驱动任务二有一个接口AddImp规定了有求和的方法sum();另外一个SubImp接口规定了有减法运算的方法subtract();再声明一个接口Calculatable继承于以上
两个接口。创建Calculator类实现接口Calculatable,并生成对象测试该对象的加减功能。11目标及知识点接口的实现2接口的继承3多接口4接口的定义112接口的定义在Java语言中,用关键字interface来定义接口。接口与类有相似的结构,其定义格式如下:[修饰
符]interface接口名[extends父接口名]{//接口体}13接口的定义例3-3InterfaceObjectArea{doublePI=3.14;doublearea(doubler);}注意:接口和普通类不一样的是它的方法默认是抽象和公共的,属性默认是常量,静态的和公共的
14接口的实现若一个类想统一在某个接口的规范下,想具有这个接口的”身份”,就需要实现这个接口。格式如下:Class类名implements接口名{}接口的实现15例3-4classCircleimplement
sObjectArea{publicdoublearea(doubler){//重写returnPI*r*r;}}注意:若实现接口的类不是抽象类,则该类必须实现指定接口的所有抽象方法。方法头部应该与接口中的定义完全一致,即有完全相同的方法名、参数表和返回值。16接口继承接口也可以
通过关键字extends继承其他接口。子接口将继承父接口中所有的常量和抽象方法。Interface接口名extends接口名{}接口继承17例3-5:interfaceA{Stringa="接口A中常量";vo
idshowA();}interfaceBextendsA{Stringb="接口B中常量";voidshowB();}interfaceCextendsB{Stringc="接口C中常量";voidshowC();}classInterfaceABCimplementsC{publi
cvoidshowA(){//重写A接口中的方法System.out.println(a);}publicvoidshowB(){//重写B接口中的方法System.out.println(b);}publicvoidshowC(){//重写C接口中的方法System.out.print
ln(c);}}实现多接口18一个类可以同时实现多个接口,接口名之间用逗号间隔。例3-6:interfaceA{voidmeth1();}interfaceB{voidmeth2();}classMyClassimpleme
ntsA,B{publicvoidmeth1(){System.out.println("Implementmeth1().");}publicvoidmeth2(){System.out.println("Implementmeth2().");}}19任务实现123分析接口及类关系创
建接口实现接口45创建对象调用对象中的方法完成具体功能20课堂总结❖抽象类的定义和继承❖接口的定义和实现