第4章java接口抽象类.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章java接口抽象类

第4章 接口、抽象类与包 4.1 接口 Java不支持多继承性,即一个类只能有一个父类。单继承性使得Java简单,易于管理程序。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。 使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。例如: public interface A{ int x = 1; void method1(); } 4.1 接 口 4.1.1 接口定义 (1)接口定义由接口声明和接口体两部分组成。其格式如下: public interface 接口名 extends I1,...,Ik //接口声明 {//接口体,其中可以包含方法声明和常量 ... } 在接口定义中,位于extends关键字后面的I1,…,Ik就是被继承的接口。由一对花括号{}括起来的部分是接口体。 4.1.1 接口定义 (2)接口体 接口体中包含常量定义和方法定义两部分。 接口中声明的变量,隐式地声明为public、static、final,即常量,所以接口中定义的变量必须初始化。 在Java接口中声明的方法,将隐式地声明为公有的(public)和抽象的(abstract)。 由于接口没有为其中声明的方法提供实现,在方法声明后会需要一个分号。例如:void method1(); Java接口和类还有一个重要的区别:在Java接口中不存在构造方法。 4.1.1 接口定义 和类不同,一个Java接口可以继承多个父接口,子接口也可以对父接口的方法和变量进行覆盖。例如: interface A{ int x = 1; void method1(); } interface B{ int x = 2; void method2(); } interface C extends A,B{ int x = 3; void method1(); void method2(); } 4.1.2 接口的实现 Java接口中声明了一组抽象方法,它构成了实现该接口的不同类共同遵守的约定。在类定义中可以用关键字implements来指定其实现的接口。 要注意的是, 如果一个类实现某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体。接口中的方法被默认是public和abstract的,类在实现接口方法时,一定要用public来修饰方法。 类实现的接口方法以及接口中的常量可以被类的对象调用。 如果父类实现了某个接口,则其子类也就自然实现这个接口。现在我们看一个例子来看一看类是如何实现接口的。 例4.1 Example.java 例4.2 implementsDemo . java 4.1.3 接口作为类型 Java接口也是一种数据类型,可以在任何使用其他数据类型的地方使用接口名来表示数据类型。我们可以用接口名来声明一个类变量、一个方法的形参或者一个局部变量。 用接口名声明的引用型变量,可以指向实现该接口的任意类的对象。 例4.3 Server.java 4.1.4 接口不应改变 一个接口声明了方法,但没有实现它们。 用户想修改某个接口,为其添加一个方法,这个简单的修改可能会造成牵一发而动全身的局面:所有实现这个接口的类都将无法工作,因为现在它们已经不再实现这个接口了。用户要么放弃对这个接口的修改,要么连同修改所有实现这个接口的所有类。 4.2 抽 象 类 在现实世界中存在的一些概念通常用来泛指一类事物,比如家具,用来指桌子、凳子等一系列具体的实物。就家具本身而言,是一个抽象概念。 开发一个作图软件包,对于点、线、三角形和圆等这样一些具体概念是不同的,但又都属于形状这样一个概念,形状就是一个抽象概念。 在Java中,我们可以定义一个抽象类来表示这样的概念。 abstract class Graphic{ //抽象类Graphic public static final double PI = 3.1415926; double area(){ return 0; }; abstract void draw(); //抽象方法} class Point extends Graphic{ protected double x, y; public Point(double x, double y)

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档