Java面向对象程序设计和系统开发第3章面向对象设计思想ppt课件_第1页
Java面向对象程序设计和系统开发第3章面向对象设计思想ppt课件_第2页
Java面向对象程序设计和系统开发第3章面向对象设计思想ppt课件_第3页
Java面向对象程序设计和系统开发第3章面向对象设计思想ppt课件_第4页
Java面向对象程序设计和系统开发第3章面向对象设计思想ppt课件_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计面向对象程序设计与系统开发与系统开发第3章 面向对象设计思想 2驱动任务一驱动任务一 创建一个抽象类Animal,它包含一个abstract的sound()方法;派生一个子类Dog,实现父类抽象方法sound();创建子类Dog对象,然后调用它的sound()方法。3目标及知识点目标及知识点定义和使用抽象类定义和使用抽象类2final关关键键字的使用字的使用3抽象类的概念抽象类的概念1 14抽象类抽象类 如果一个类中没有包含足够的信息来描绘一个具如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类体的对象,这样的类就是抽象类 定义一个抽象类的格式如下 abst

2、ract class AbstractClassNamepublic abstract class Shapepublic abstract double area();/抽象方法抽象方法public abstract double volume();/抽象方法抽象方法 当一个类被定义成当一个类被定义成abstractabstract类时,表示一个抽象的概念,它不能用类时,表示一个抽象的概念,它不能用newnew关键字关键字实例化对象,例如上面定义的实例化对象,例如上面定义的ShapeShape类就是一个抽象类,只有被继承并在子类类就是一个抽象类,只有被继承并在子类中重写其抽象方法,它才有意义

3、。中重写其抽象方法,它才有意义。 5【例【例3-1】 v 定义一个代表形状的抽象类,并派生出圆柱体类和长方体类,计算底面半径为2高为3的圆柱体体积和长、宽、高分别为3、2、4的长方体体积。 /定义一个形状抽象类定义一个形状抽象类abstract class Shapedouble radius,length,width,height;abstract double vol();/求体积的抽象方法求体积的抽象方法Shape(double r,double h)/对半径和高进行初始化的构造方法对半径和高进行初始化的构造方法radius = r;height = h;Shape(double l,d

4、ouble w,double h)/对长宽高进行初始化的构造方法对长宽高进行初始化的构造方法length = l;width = w;height = h;/*圆柱体类圆柱体类*/class Circle extends ShapeCircle(double r,double h)super(r,h);double vol()/重写父类抽象方法重写父类抽象方法return(3.1416*radius*radius*height); /*长方体类长方体类*/class Rectangle extends ShapeRectangle(double l,double w,double h)supe

5、r(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,2,4); System.out.println(圆柱体体积圆柱体体积 = + c.vol(); System.out.println(长方体体积长方体体积 = + r.vol();结果:结果:圆柱

6、体体积圆柱体体积37.6992长方体体积长方体体积24.0【思索】【思索】abstract修饰的类一定有修饰的类一定有abstract修饰的方法吗?修饰的方法吗?Java面向对象软件开发6最终类-final类 有一种类是不能派生出子类的,我们叫这种类为最有一种类是不能派生出子类的,我们叫这种类为最终类。即我们用终类。即我们用final来修饰的类。来修饰的类。public final class Test1 Java面向对象软件开发7最终类-final类 如果一个类不允许其子类覆盖某个方法,则可以把这个如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为方法声明为final方法方法 pub

7、lic final void f2() System.out.println(f2);Java面向对象软件开发8【例【例3-2】 使用使用final方法的例子方法的例子class Test1 public void f1() System.out.println(f1);/ 无法被子类覆盖的方法无法被子类覆盖的方法public final void f2() System.out.println(f2);public class Test2 extends Test1public void f1() System.out.println(Test1父类方法父类方法f1被覆盖被覆盖!);publ

8、ic static void main(String args) Test2 t = new Test2();t.f1();t.f2(); / 调用从父类继承过来的调用从父类继承过来的final方法方法结果:结果:Test1父类方法父类方法f1被覆盖被覆盖!f29任务实现任务实现123分析类及关系分析类及关系 定义抽象类定义抽象类Animal Dog类利用构造方法为类利用构造方法为type属性赋值属性赋值 45Dog类实现类实现Animal的的sound() main方法进行测试方法进行测试 10驱动任务二驱动任务二 有一个接口AddImp规定了有求和的方法sum();另外一个SubImp接口

9、规定了有减法运算的方法subtract();再声明一个接口Calculatable继承于以上两个接口。创建Calculator类实现接口Calculatable,并生成对象测试该对象的加减功能。11目标及知识点目标及知识点接口的实现接口的实现 2接口的继承接口的继承 3多接口多接口4接口的定义接口的定义1 112接口的定义接口的定义在Java语言中,用关键字interface来定义接口。接口与类有相似的结构,其定义格式如下:修饰符修饰符 interface 接口名接口名 extends父接口名父接口名/接口体接口体 13接口的定义接口的定义例例3-3Interface ObjectArea d

10、ouble PI =3.14; double area(double r); 留意:留意:接口和普通类不一样的是它的方法默认是抽象和公共的,接口和普通类不一样的是它的方法默认是抽象和公共的,属性默认是常量,静态的和公共的属性默认是常量,静态的和公共的14接口的实现接口的实现 若一个类想统一在某个接口的规范下,想具有这个接口的身份”,就需要实现这个接口。格式如下:Class 类名类名 implements 接口名接口名接口的实现接口的实现15例例3-4class Circle implements ObjectAreapublic double area(double r)/重写重写return

11、 PI*r*r;留意:留意:若实现接口的类不是抽象类,则该类必须实现指定接口的若实现接口的类不是抽象类,则该类必须实现指定接口的所有抽象方法。方法头部应该与接口中的定义完全一致,即所有抽象方法。方法头部应该与接口中的定义完全一致,即有完全相同的方法名、参数表和返回值。有完全相同的方法名、参数表和返回值。16接口继承接口继承 接口也可以通过关键字extends继承其他接口。子接口将继承父接口中所有的常量和抽象方法。Interface 接口名接口名 extends 接口名接口名 接口继承接口继承17例例3-5:interface AString a = 接口接口A中常量中常量;void showA

12、(); interface B extends AString b = 接口接口B中常量中常量;void showB();interface C extends BString c = 接口接口C中常量中常量;void showC(); class InterfaceABC implements Cpublic void showA()/重写重写A接口中的方法接口中的方法System.out.println(a);public void showB()/重写重写B接口中的方法接口中的方法System.out.println(b);public void showC()/重写重写C接口中的方法接口中的方法System.out.println(c);实现多接口18一个类可以同时实现多个接口,接口名之间用逗号间隔。一个类可以同时实现多个接口,接口名之间用逗号间隔。例例3-6:interface A void meth1(); interface B void meth2();class MyClass implements A,B public void meth1() System.out.prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论