JAVA:接口与抽象类

上传人:jiups****uk12 文档编号:55615262 上传时间:2018-10-03 格式:PPT 页数:31 大小:180.50KB
返回 下载 相关 举报
JAVA:接口与抽象类_第1页
第1页 / 共31页
JAVA:接口与抽象类_第2页
第2页 / 共31页
JAVA:接口与抽象类_第3页
第3页 / 共31页
JAVA:接口与抽象类_第4页
第4页 / 共31页
JAVA:接口与抽象类_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《JAVA:接口与抽象类》由会员分享,可在线阅读,更多相关《JAVA:接口与抽象类(31页珍藏版)》请在金锄头文库上搜索。

1、Java面向对象程序设计,接口与抽象类,教学内容,接口的概念、定义接口方法 集合接口的应用 抽象类的概念 接口与抽象类的区别,教学目标,理解和掌握接口的定义 掌握实现接口的方法 掌握集合及其集合接口的应用 理解List接口 理解抽象类的概念 理解接口与抽象类的区别,8.1引例,例8.1组装电脑:通过PCI接口将主板与显卡和声卡连接。 分析: 很多教材在介绍接口时大多使用组装电脑作为案例,本章也选择大家熟悉的组装电脑作为引例。实际上,无论是显卡还是声卡,都是插在PCI槽上的,所以,首先定义一个PCI接口,然后定义显卡类和声卡类实现PCI接口,从而它们的对象能直接传递给PCI接口的对象,在参数传递

2、过程中实现接口回调。,/ Jpro8_1.java interface PCI void setName(String s);void run(); class VideoCard implements PCI String name=“微星“;public void setName(String s)name=s;public void run()System.out.println(name+“显卡已开始工作!“); class SoundCard implements PCI String name=“AC“;public void setName(String s)name=s;pub

3、lic void run()System.out.println(name+“声卡已开始工作!“); ,8.1引例(续),8.1引例(续),class Mainboard public void interfacePCI(PCI p)p.run();public void run()System.out.println(“主板已开始工作!“); public class Jpro8_1 public static void main(String args)Mainboard mb=new Mainboard();VideoCard vc=new VideoCard();vc.setName(

4、“HuaWei“);SoundCard sc=new SoundCard();mb.interfacePCI(vc);mb.interfacePCI(sc);mb.run(); ,8.2 接口,接口就是方法定义和常量值的集合。接口又称界面,引入接口的目的是为了克服Java单继承机制带来的缺陷,实现类的多继承的功能。Java的接口在语法上类似于类的一种结构,但是接口与类有很大的区别。它只有常量定义和方法声明,没有变量和方法的实现。 接口还可以用来实现不同类之间的常量共享。,8.2.1 定义接口,接口是一种特殊的类,只定义了类中方法的原型,而没有直接定义方法的内容。接口的定义包括接口声明和接口体两

5、部分,格式如下:public|abstract interface 接口名 extends 接口列表常量声明;方法声明;接口的修饰符可以是public或abstract,其中public或abstract可以缺省。public的含义与类修饰符是一致的。但是缺省public或abstract修饰符时,定义的接口只能被同一个包中的其他类和接口使用。,8.2.1 定义接口(续),下面是一个接口定义的例子: public interface Shape float width=9.8f;float height=6.6f;public float girth();public float area()

6、; 上面程序段定义了一个名为Shape的接口,其中有两常量width和height,以及两个抽象方法girth()和area()。 与类一样,接口也具有继承性。定义接口时可以使用extends关键字定义该新接口是某个已经存在的父接口的派生接口,它将继承父接口的所有属性和方法。与类的单继承不同,一个接口可以有多个父接口,接口名称之间用“,”分隔。新的接口将继承所有父接口的属性和方法。,8.2.2 接口实现,在类中实现接口的格式如下:类修饰符 class 类名 extends 父类名 implements 接口名列表 其中,接口名列表包括多个接口名称,各接口间用逗号分隔。implements是实现

7、接口的关键字。实现接口的类,如果不是抽象类,就必须实现接口中定义的所有方法,并给出具体的实现代码,当然还可以使用接口中定义的任何常量。,例8.2 接口的实现示例。 /Jpro8_2.java interface Shape /定义一个接口Shape double PI=3.14;void print(); class Circle implements Shape / 实现接口Shape public void print()System.out.println(“我实现了接口“+PI); public class Jpro8_2 public static void main(String

8、args)Circle circle=new Circle();circle.print(); ,8.2.2 接口实现(续),实现接口时,需要注意以下问题: 1如果实现接口的类不是abstract修饰的抽象类,那么在类的定义部分必须实现接口中定义的所有方法,并给出具体的实现代码。这是因为非抽象类中不可以存在抽象方法。 2如果实现接口的类是abstract修饰的抽象类,那么它可以不实现该接口的所有抽象方法。 3在实现接口方法时,必须将方法声明为公共方法(public),而且还要将方法的参数列表、名称和返回值与接口中定义的完全一致。 4如果在实现接口的类中所实现的方法与抽象方法有相同的方法名称和不

9、同的参数列表,则只是重载了一个新的方法,并没有实现接口中的抽象方法。 5接口的抽象方法的访问修饰符规定为public,则类在实现这些抽象方法时,必须显式地使用public修饰符,否则系统提示出错警告。 6如果接口中的方法的返回类型不是void,则在类中实现该方法时,方法体中至少要有一条return语句。,8.2.2 接口实现(续),8.3 集合接口,Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口和实现接口的实现类组成。一般来说,理解了集合接口就容易掌握集合框架。Java平台提供了6个集合接口,不同接口用来描述一组不同数据类型。,8.3.1 Collection接

10、口,Collection是在java.util包中的接口,是整个Java集合框架中的基石。Collection接口的声明如下: public interface Collection Collection接口是其他接口的父接口,它定义了集合框架中一些最基本的方法。除了Collection接口外,其他常用的还有Set、List这两大类。 Collection跟数组最大的不同是数组有容量大小的限制,而Collection没有。此外,Collection中存放的都是对象,即使是基本类型也要转换为对象类型。Collection中的数据称之为元素。这些元素没有特定的顺序,元素也可以重复。,8.3.1 C

11、ollection接口(续),8.3.2 List接口,在使用List接口时注意以下两点: (1)所有的索引返回的方法都有可能抛出一个IndexOutOfBoundsException异常。 (2)subList(int fromIndex, int toIndex)返回的是包括fromIndex,不包括toIndex的视图,该列表的长度为toIndex-fromIndex。,8.3.2 List接口(续),例8.3 添加与删除List中的元素。 / Jpro8_3.java import java.util.*; public class Jpro8_3 public static void

12、 main(String args) List list = null ;list = new ArrayList();list.add(“Beijing“);list.add(0, “);list.add(“Anhui“);list.add(“Shanghai“);list.remove(0);list.remove(“Anhui “);System.out.println(list); ,8.3.3 Set接口,Set集合由Set接口与Set接口的实现类组成。与List集合不同的是,Set集合中的对象不按特定的方式排序,只要简单将对象加入集合中,但是不能有重复对象。Set接口继承了Coll

13、ection接口,因此包含了Collection接口的所有方法。 要使用Set集合,先声明为Set类型,然后通过Set接口的实现类来实例化。Set接口的常用实现类是HashSet和TreeSet类。 例如: Set set=new HashSet(); 就声明了一个Set实例。 要获取Set集合对象,先生成Iterator对象,再通过迭代器来获取集合中的对象,如:Iterator it=set.iterator();while(it.hasNext()System.out.print(it.next()+” “); 由于Set集合中的对象不能重复,因此可以使用Set集合中的addAll()方法

14、将Collection集合中添加到Set集合中,以除去重复对象。,例8.4 首先创建一个List对象,并添加元素,然后将List集合中的元素添加到Set集合中,则会除去其中重复的元素。 / Jpro8_4.java import java.util.*; public class Jpro8_4 public static void main(String args) List list = new ArrayList();/创建List集合对象list.add(“1“); /向集合中添加元素list.add(“2“);list.add(“3“);list.add(“2“);Set set =

15、 new HashSet();/创建List集合对象set.addAll(list); /将List集合添加到Set集合中Iterator it = set.iterator();/创建Set集合迭代器System.out.println(“集合中的元素是:“);while (it.hasNext() System.out.println(it.next(); ,8.3.3 Set接口,8.3.4 Iterator接口,Iterator接口位于java.util包中,用来遍历集合中的元素,它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。如果没有使用Iterat

16、or,遍历一个数组的方法是使用索引。 下面先看看Iterator接口的定义: public interface Iterator boolean hasNext();Object next(); void remove(); 每一种集合类返回的Iterator具体类型可能不同。例如,Array可能返回ArrayIterator,Set可能返回SetIterator,Tree可能返回TreeIterator,但是它们都实现了Iterator接口,因此,客户端不关心到底是哪种Iterator,它只需要获得这个Iterator接口就可以了。,例8.5 Iterator接口的使用。 / Jpro8_5.java import java.util.*; public class Jpro8_5 public static void main(String args) Collection c = new ArrayList(); c.add(“a“);c.add(“b“);Iterator it = c.iterator();for(;it.hasNext();)String s = (String)it.next();System.out.println(s); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号