您现在的位置:首页 > >

最新文档-Java面向对象程序设计与系统开发第3章 面向对象设计思想-PPT精品文档_图文


面向对象程序设计 与系统开发
第3章 面向对象设计思想

驱动任务一
创建一个抽象类Animal,它包含一个abstract的 sound()方法;派生一个子类Dog,实现父类抽象方法 sound();创建子类Dog对象,然后调用它的sound()方 法。
2

目标及知识点
1 抽象类的概念 2 定义和使用抽象类 3 final关键字的使用
3

抽象类
public abstract class Shape{
ppuubb如lliicc 果aabbss一ttrraa个cctt类ddoo中uubbll没ee av有orelua包m();e含//(抽);足/象/抽够方象法的方法信息来描绘一个具 } 体的对象,这样的类就是抽象类
定义一个抽象类的格式如下
当一个类被定义成abstract类时,表示一个抽象的概念,它不能用new关键字 实例化ab对st象ra,ct例cl如as上s 面Ab定st义ra的ctSChlaaspse类Na就m是e{一个抽象类,只有被继承并在子类 中重写…其…抽象方法,它才有意义。
}
4

【例3-1】

? 定义一个代表形状的抽象类,并派生出圆柱体类和长方体

//类定义,一计个算形状底抽面象半类 径为2高为3的圆柱体体积和长、宽、高分

/*a*b/*s*别t/*r*a为ct c3l、ass2S、ha4p的e{长方体体积。

*圆*长 主柱d方类体ou体类bl类e radius,length,width,height;

*/ */ abstract double vol();//求体积的抽象方法

clacpsluaSsbshClsiacipRrceel(acedstoeasuxnAtbgebllneesdrte,srdxatSoceuhtnCbadlplaseesSh{s)hD{a/e/p对me半o{ {径和高进行初始化的构造方法

CpiRruceblcelit(rcadanodsgtuiualbetsil(ced=vorr,oud; ibodluemblla,edinoh(u)S{btlreinwg,[d] oaurgbsle) {h){

【思}}考}CR】ieraccsbthluaseesnpticurggeap=rhlcee(ttrnr修,r=(hel=,)w饰hw; n;,的Cheiw)类r;cRl一ee(定c2,t3a有)n;agbles(t3ra,2c,t4修); 饰的方法吗?

dSodShuoaybpsultebe(lvmdeoo.vlou(o)ubl{(t/l)/.e{重p/lr/,重写idnot写父lun父b类("le圆类抽w柱抽象,d体象方o体u方法b积法le =h)"{/+/对c长.vo宽l(高));进行初始化的构造方法

Sysrtleetrmnuegtr.uonthru(n3t=.1p(ll4re;i1nn6gt*ltnrha(*"dw长iuid方st*h体ra*hd体eiui积gsh*=ht)e;"ig+hrt.v);ol());

} } width = w;

} }}

height = h;

结果:

}

圆柱体体积=37.6992

}

长方体体积=24.0

5

最终类-------final类
有一种类是不能派生出子类的,我们叫这种类为最 终类。即我们用final来修饰的类。
public final class Test1 { }

6

Java面向对象软件开发

最终类-------final类
如果一个类不允许其子类覆盖某个方法,则可以把这个 方法声明为final方法
public final void f2() { System.out.println("f2");
}

7

Java面向对象软件开发

class Test1 {
publicSyvsotiedm【f1.o()u例{t.pr3in-tl2n("】f1");使用final方法的例子
} // 无法被子类覆盖的方法 public final void f2() {
System.out.println("f2"); } }

public class Test2 extends Test1{

public void f1() {

System.out.println("Test1父类方法f1被覆盖!");

}

public static void main(String[] args) {

Test2 t = new Test2();

t.f1();

t.f2(); // 调用从父类继承过来的final方法

}

结果:

}

Test1父类方法f1被覆盖!

f2

8

Java面向对象软件开发

任务实现
1 分析类及关系 2 定义抽象类Animal 3 Dog类利用构造方法为type属性赋值 4 Dog类实现Animal的sound() 5 main方法进行测试
9

驱动任务二
有一个接口AddImp规定了有求和的方法sum();另外一个 SubImp接口规定了有减法运算的方法subtract();再声明一个 接口Calculatable继承于以上两个接口。创建Calculator类实 现接口Calculatable,并生成对象测试该对象的加减功能。
10

目标及知识点
1 接口的定义 2 接口的实现 3 接口的继承 4 多接口
11

接口的定义
在Java语言中,用关键字interface来定义接口。接口与类 有相似的结构,其定义格式如下:
[修饰符] interface 接口名 [extends父接口名]{ //接口体 }
12

接口的定义
例3-3 Interface ObjectArea{
double PI =3.14; double area(double r); }
注意: 接口和普通类不一样的是它的方法默认是抽象和公共的, 属性默认是常量,静态的和公共的
13

接口的实现
若一个类想统一在某个接口的规范下,想具有这个接口 的”身份”,就需要实现这个接口。格式如下:
Class 类名 implements 接口名{ }
14

接口的实现
例3-4 class Circle implements ObjectArea{
public double area(double r){//重写 return PI*r*r;
} }
注意: 若实现接口的类不是抽象类,则该类必须实现指定接口的
所有抽象方法。方法头部应该与接口中的定义完全一致,即 有完全相同的方法名、参数表和返回值。
15

接口继承
接口也可以通过关键字extends继承其他接口。子接口将 继承父接口中所有的常量和抽象方法。
Interface 接口名 extends 接口名 { }
16

interfaScetriCngexcte=接n"d接口s 口B继{C中承常量";

void showC();

} 例3-5:

interface A{ class InterfaceABC implements C{ String a = "接p口ubAli中c 常vo量id"s;howA(){//重写A接口中的方法

void showA(); System.out.println(a);

}

}

public void showB(){//重写B接口中的方法

interface B extends A{ System.out.println(b); String b = "接} 口B中常量";

void showB(p);ublic void showC(){//重写C接口中的方法

}

System.out.println(c);

}

}

17

例3-6: interface A {

实现多接口

void meth1();

}

一个类可以同时实现多个接口,接口名之间用逗号间隔。 interface B {

void meth2();

}

class MyClass implements A,B {

public void meth1() {

System.out.println("Implement meth1().");

}

public void meth2() {

System.out.println("Implement meth2().");

}

}

18

任务实现
1 分析接口及类关系 2 创建接口 3 实现接口 4 创建对象 5 调用对象中的方法完成具体功能
19

课堂总结
? 抽象类的定义和继承 ? 接口的定义和实现
20



★相关文章:
热文推荐
友情链接: 工作计划 总结汇报 团党工作范文 工作范文 表格模版 生活休闲