Java程序设计项目化教程-5.2.1-2抽象类和接口脚本_第1页
Java程序设计项目化教程-5.2.1-2抽象类和接口脚本_第2页
Java程序设计项目化教程-5.2.1-2抽象类和接口脚本_第3页
Java程序设计项目化教程-5.2.1-2抽象类和接口脚本_第4页
Java程序设计项目化教程-5.2.1-2抽象类和接口脚本_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

抽象类就是只声明成员方法的存在,而不去具体实现成员方法的类。抽象类不能被实例化,也不能创建其对象。5.2.1抽象类1.抽象类的定义在定义抽象类时,在关键字class的前面加上关键字abstract。5.2.1抽象类publicabstractclass类名{

类体定义;

}5.2.1抽象类

2.抽象方法的定义抽象方法是只有方法声明而没有方法主体的特殊方法,采用abstract关键字修饰。5.2.1抽象类

publicabstract返回值类型方法名(参数列表);5.2.1抽象类抽象方法用来描述系统的功能或者规范某些操作,不提供具体的实现。具体的实现通常由抽象方法所在类的子类来实现。没有abstract关键字修饰的方法称为具体方法,具体方法必须有具体实现,也就是必须有方法体。5.2.1抽象类例5-8使用抽象类packagechapter5;abstractclassAnimal{//定义抽象类

abstractvoidshou();//定义抽象方法

}classBirdextendsAnimal{//定义Bird类继承抽象类Animalvoidshou(){//实现抽象方法shou()System.out.println("叽叽叽…");5.2.1抽象类5.2.1抽象类}}publicclassexample5_8{publicstaticvoidmain(String[]args){Birdbird=newBird();bird.shou();}}程序运行结果:5.2.1抽象类(1)抽象类和抽象方法都必须使用abstract关键字修饰。(2)抽象类不能被实例化,无法使用new关键字来调用抽象类的构造方法创建抽象类实例,即使抽象类里面不包含抽象方法,这个抽象类也不能创建实例。5.2.1抽象类(3)抽象类可以包含属性、方法、构造方法、初始化块、内部类、枚举类。抽象类的构造方法不能用于创建实例,主要是用于被其子类调用。(4)含有抽象方法的类只能被定义成抽象类。4.抽象类的用途抽象类不能创建实例,只能被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类为模板,从而避免子类的随意设计。5.2.1抽象类4.抽象类的用途抽象类体现的就是模板模式的设计,抽象类作为多个子类的模板,子类在抽象类的基础上进行扩展,但是子类大致保留抽象类的行为。5.2.1抽象类PART5.2.2接口定义一个动物类,动物类可以是老虎,可以是狮子,所以,动物这个类就可以定义成抽象类,还可以定义几个抽象的方法,比如捕食、奔跑等,这样就形成了一个接口。5.2.2接口如果你想要一只狮子,那么就可以实现动物类这个接口,同样可以实现动物类接口中的方法,当然,也可以存在狮子特有的方法。5.2.2接口

1.定义接口[public]interface接口名[extends父接口名列表]{[public][static][final]数据类型常量名;

[public][abstract]返回值类型抽象方法名(参数列表);}在上面的格式中,可以看到接口具有继承性,可以通过implements关键字来声明一个接口的父接口。但是和普通类的继承性不同的是,一个接口可以有多个父接口,父接口之间用逗号隔开,而普通的类只能有一个父类。Java使用接口的目的就是为了克服普通类单继承的机制。5.2.2接口2.实现接口由于接口是特殊的抽象类,所以接口也不可以直接通过实例化来创建对象,要调用接口中的方法,需要定义一个类或多个类来实现接口。5.2.2接口定义类实现接口时,可以使用implements关键字。一个类只能继承一个父类,但可以实现多个接口,而且一个类可以在继承某个父类的同时实现多个接口,多个接口之间用逗号隔开。5.2.2接口

publicclass类名extends父类名implements接口1,接口2…{

类体

}5.2.2接口5.2.2接口(1)如果在一个类中实现了接口,那么该类就可以使用接口中的常量。(2)一个类如果要实现接口,必须实现该接口中声明的所有抽象方法,否则这个类将变成抽象类或接口。5.2.2接口(3)如果类在实现接口时对接口中声明的方法进行了重写,那么重写的方法的访问权限必须为public,否则会出现编译错误。例5-9实现接口packagechapter5;interfaceCircle{//定义接口CircledoublePI=3.14159;voidsetRadius(doublerad);//定义抽象方法setRadius()doublegetArea();//定义抽象方法getArea()}publicclassexample5_9implementsCircle{//定义DeInterface类实现接口Circledoubleradius;publicvoidsetRadius(doublerad){//重写Circle接口中的setRadius()方法

this.radius=rad;5.2.2接口5.2.2接口}publicdoublegetArea(){//重写Circle接口中的getArea()方法

return(radius*radius*PI);}publicstaticvoidmain(String[]args){do5_9do1=newdo5_9();System.out.println("接口中定义的PI="+PI);do1.setRadius(5.5);System.out.println("theareais"+do1.getArea());}}程序运行结果:

3.接口和抽象类(1)接口与抽象类都不能被实例化,可以被其他类实现和继承。(2)接口和抽象类中都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。5.2.2接口(1)在接口中只能包含抽象方法,不能包含普通方法。而抽象类中可以包含普通方法。(2)在接口中不能定义静态方法,而抽象类中可以定义静态方法。5.2.2接口(3)在接口中只能定义静态常量属性,不能定义普通属性。而在抽象类中既可以定义静态常量属性,也可以定义普通属

温馨提示

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

评论

0/150

提交评论