- 1、本文档共63页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 抽象类与接口
Java语言与系统设计 中南大学信息科学与工程学院 计算机工程系 黄家玮 jiaweihuang@ 第7章 抽象类与接口 抽象类的定义和使用 接口的定义和使用 包的声明和引入 类的应用程序举例 抽象类 有时,定义的类代表一个抽象的概念,就不能用它来实例化一个对象。例如,现实世界中食品这个概念,不可能有一个食品对象,可以见到的是一些诸如饼干、苹果、巧克力等具体对象。食品代表着一个抽象的概念:能吃的东西。 同样在面向对象程序设计中,可能需要建立一个不需要实例化的类,就抽象类。 在Java语言中,使用abstract修饰的类被称作抽象类,不能用它实例化一个对象,它只能被继承,反映现实世界中一个抽象的概念。 抽象类往往用来表征我们在对问题域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。 正是因为抽象的概念在问题域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。 抽象类的定义形式: 一般格式如下: abstract? class? 类名 { ?? 类体 ?? } 抽象类是不能直接实例化对象的类。也即抽象类不能使用new运算符去创建对象。 抽象类一般包括一个或几个抽象方法。所谓抽象方法需在abstract修饰符进行修饰,抽象方法只有方法的声明部分,没有具体的方法实现部分。抽象类的子类必须重写父类的抽象方法,才能实例子化,否则子类也是一个抽象类。 抽象类中不一定包含抽象方法,但是包含抽象方法的类必须说明为抽象类。 抽象方法不同与一般的方法,一般方法既有方法头又有方法体,是一个方法的完整定义;抽象方法只有方法头,或者叫方法的声明,而没有方法体,或者说没有给出方法的具体实现,在方法头后面直接使用分号来结束抽象方法的定义。 实例: abstract class? Animal { ? ?String?? name;????? ?? Animal(String name){???????? ????=name; ?? } ?void getname(){??????????? ? ???? System.out.println(Animals name is+name); ? } ?abstract void? move();??? //? 抽象方法,用abstract 修饰 ?} class Dog extends Animal{ int age; Dog(String name,int age){ super(name); this.age=age; } void move(){ System.out.println(Dog is running!); } void getage(){ System.out.println(Dog is +age+ years old); } } public class AbstractDemo{ public static void main(String args[]){ Dog d=new Dog(wangwang,5); d.move(); d.getname(); d.getage(); } } 定义抽象类需要在一般类定义格式中的关键字class前面,使用关键字修饰符abstract。 定义抽象类中的每个抽象方法也需要在方法头的前面使用关键字abstract作为修饰符,在方法头的后面使用分号结束。 因为类中包含有抽象方法,抽象方法只有方法头,没有方法体,不能被调用执行,所以抽象类不能使用new运算进行实例化。但可以定义抽象类的引用对象,用来引用其派生类中的实例对象,以便实现多态性。 抽象方法将在抽象类的派生类中被实现。抽象类中也可以包含非抽象方法。如果一个抽象类除了抽象方法外什么都没有,则使用接口更合适。 实例: abstract class BBB { //平面几何图形的抽象类 double x,y; //平面的长和宽 BBB() {x=0; y=0;} //无参构造函数 BBB(double xx, double yy) {x=xx; y=yy;} //带参构造函数 abstract double area(); //求面积的抽象方法 abstract double girth(); //求周长的抽象方法 } class CCC extends BBB { //矩形类 CCC() {super();} CCC(d
您可能关注的文档
- 第6课 古代世界的战争与征服 PPT课件2(人教版新课标九年级上).ppt
- 第73期高考作文点题、扣题训练配套课件.ppt
- 第6课_古代世界的战争与征服 好课件.ppt
- 第6课《古代世界的战争与征服》课件 新人教版.ppt
- 第6课古代世界的战争与征服4.ppt
- 第7专题 情态动词和虚拟语气1.ppt
- 第7单元介词.doc
- 第7章 培训与开发的效果评价与效果评价体系.ppt
- 第6课时组合图形的面积 例5.ppt
- 第7单元-邮件协议.ppt
- 广东省道路工程检测考试试题-(模拟题5套).docx
- 《红星照耀中国》课件(共34张课件)++++++++2023-2024学年统编版语文八年级上册.pptx
- 物流管理专业介绍-课件课件.ppt
- 2019年疼痛学(正高)历年真题精选.doc
- 2022年重庆八中小升初数学真题卷及参考答案.docx
- 军训的目的及意义.ppt
- 爱尔康玻切机使用操作流程.pptx
- SAP全友07 全友家私SAP采购管理平台实施项目_To-Be 供应商管理场景_20130604_V3.0.doc
- SAP全友全友家私SAP采购管理平台实施项目PORTAL生产系统安装文档.doc
- SAP全友全友家私SAP采购管理平台实施项目MDM开发系统安装文档.doc
文档评论(0)