收藏 分享(赏)

Java抽象类.ppt

上传人:11xg27ws 文档编号:6944065 上传时间:2019-04-28 格式:PPT 页数:23 大小:369KB
下载 相关 举报
Java抽象类.ppt_第1页
第1页 / 共23页
Java抽象类.ppt_第2页
第2页 / 共23页
Java抽象类.ppt_第3页
第3页 / 共23页
Java抽象类.ppt_第4页
第4页 / 共23页
Java抽象类.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、抽象类和接口,第 四 章,Java中的抽象类、接口和程序包 抽象类与抽象方法,抽象类:用abstract关键字来修饰一个类时,该类叫做抽象类; 抽象类必须被继承。 抽象类不能被直接实例化。它只能作为其它类的超类,这一点与最终类(final类)正好相反。 抽象方法:用abstract来修饰一个方法时,该方法叫做抽象方法。 抽象方法必须被重写 抽象方法只有声明,不能有实现。 定义了抽象方法的类必须是抽象类。 abstract returnType abstractMethod ( paramlist );,抽象类与抽象方法,抽象类和最终类,声明抽象类与抽象方法 public abstract cl

2、ass PlaneGraphics1/平面图形类,抽象类 public abstract double area(); /计算面积,抽象方法,分号“;”必不可少 ,抽象类和最终类,规定: 抽象类不能被直接实例化,只有它的非抽象子类可以创建对象 抽象类中不一定包含抽象方法,但有抽象方法的类必定是抽象类 抽象类中的抽象方法只是声明,不包含方法体,即不给出方法的实现 构造方法、类方法不能声明为抽象方法 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类,抽象类和最终类,抽象类的意义: 描述抽象的概念,规定必须实现的方法的统一接口关于抽象类和抽象方法 Abstracttest.ja

3、va,最终类和最终方法 final关键字修饰的类称为最终类,最终类不能被继承 final关键字修饰的方法称为最终方法,最终方法不能被覆盖 最终方法和最终类没有必然的对应关系,Java中的接口,1、含义: 一组只有成员函数原型定义而无成员函数定义体的方法集。 接口定义了一组成员函数,但没有具体加以实现,其实现则是由实现该接口的类来加以具体完成的。 2、作用: 为若干个类(相关或无关的类)定义一组相同的功能行为,从而达到相同的功能名称,不同的功能实现之目的; 另外也可以实现类似C+语言中的多重继承但又避免了虚基类的编程。,接口的概念,在构建问题的类过程中,我们经常会遇到一种特殊的情况,在描述某个类

4、的各个方法时,对每个方法我们只能给出其功能实现的要求(原形声明)但不能给出具体的功能实现(函数定义体)。 因为我们所处理的问题只是一个泛泛的功能说明,并没有针对某一具体类型的问题来说明。,接口定义格式,要点:类似于类的定义格式,只是以 interface作为定义符。 格式: 接口的类型interface 接口名 常量(并且必须初始化 );成员方法定义(只有原形而无函数定义体 ); 或: 接口的类型interface 派生的接口名 extends 父接口名列表 接口中的成员变量定义;接口中的成员方法原型定义;,实现接口,方法: 通过定义一个类同时采用implements来指明所实现的接口名,并在

5、该类中重写接口中的所有成员方法且给出成员函数体定义。 要点 类中所实现的接口中的成员函数的原型都应该与它在 接口中的原型定义保持一致; 并在类中重写接口中的所有成员方法; 通过实现接口,从而可扩充或增加该类的功能。 接口只定义方法名,而类实现接口内部的方法的代码 接口的继承只是继承接口本身,而非代码,从而不会产生重复继承多次。,注意的,一个类可以实现多个接口 实现接口的类必须给出接口中所有方法的具体实现!除非这个类是抽象类 接口的作用 接口提供了完全的抽象 说明所有实现该接口的类应具有的形式 接口中的方法在多个实现接口的类中表现出多态性 接口回调 接口也是引用数据类型,指向接口的引用也可以指向

6、任意实现了该接口的类创建的实例 接口回调,即接口的引用可以指向实现了接口的类的实例 例子:Interfacetest.java,例子,interface Computer public void ComputeData(); /计算机应该有数据计算的功能public void SaveData(); /计算机应该有存储数据的功能public void PrintData(); /计算机应该有打印数据的功能public void DisplayData(); /计算机应该有显示数据的功能 ,抽象类和接口的对比,接口和类是很相似但又有区别的一种数据结构,其设计和调用也是JAVA程序设计的一种重要技

7、术。 从结构上看,接口有如下特点: 接口用interface来定义,而不是class 接口中定义的变量去全部是最终的静态变量 接口中没有自身的构造方法,不能创建实例,而定义的 其他方法全是抽象方法,即提供了方法的定义,但是没有提供方法的实现。 接口采用多重继承机制,而不是采用单一的继承机制。,接口与抽象类的区别,抽象类和接口中主要关心的都是抽象,而不关心具体的实现。但也有一些区别: 一个类只能继承一个类,但可以实现多个接口 抽象类表示一种继承关系,接口只说明功能 二者的区别主要体现在对问题域的理解上,抽象类的应用,abstract class Person private int ID;pri

8、vate String Name; public abstract void Eat(Food obj); public void Step(Feet obj) public void Sleep() 在描述某一个问题时,如果只能给出部分的功能实现,而不能给出全部的功能实现时,应该采用抽象类来描述。,接口的应用,interface TV public int Size=29;public abstract void showImage();public abstract void setChannel();public abstract void receiveImage(); 在描述某一个问

9、题时,如果不能给出任何的功能实现,应该采用接口来描述。,内部类,声明内部类 在一个类中包含另一个类的定义 内部类可以在类、方法甚至语句块中定义 内部类可以是private或protected的,内部类,内部类作用 与接口一起实现完整的多重继承 内部类作用 InnerClass.java 内部类具有访问外部类的引用,/内部类引用外部类的成员 public class Inner2 class aaint a=1;class bbint b=2;class cc/这对括号必须有,因为类中语句必须包含在一个代码块或方法体中int b=4;int c=3;System.out.println(“cc“

10、);System.out.println(“cc.c=“+c);System.out.println(“bb.b=“+bb.this.b);/内部类引用外部类成员System.out.println(“aa.a=“+aa.this.a); ,内部类,匿名内部类 当只需创建一个类的对象而用不上它的名字时,可以使用匿名内部类 匿名内部类由于没有名字,所以它没有带名字的构造函数 java的匿名内部类的语法规则看上去有些古怪,当你只需要创建一个类的对象而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。它的语法规则是这样的: new interfacename(); 或 new supercla

11、ssname();,有一点需要注意的是,匿名内部类由于没有名字,所以它没有带名字的构造函数(但是如果这个匿名内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。如果你想要初始化它的成员变量,有下面几种方法: 如果是在一个方法内部的匿名内部类,可以利用这个方法传进你想要的参数,不过记住,这些参数必须被声明为final。 将匿名内部类改造成有名字的局部内部类,这样它就可以拥有有名字的构造函数了。 在这个匿名内部类中使用初始化代码块。,匿名内部类实例 class PackBox interface Goods /定义内部接口String getName();Goods SportShoe () return new Goods()/匿名内部类String name = “运动鞋“;int price = 200;public String getName()return name; /事实上匿名内部类必须继承一个类或实现一个接口,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报