第6章 抽象类与接口jzhppt课件.ppt

上传人:春哥&#****71; 文档编号:16977442 上传时间:2022-05-20 格式:PPT 页数:30 大小:482KB
返回 下载 相关 举报
第6章 抽象类与接口jzhppt课件.ppt_第1页
第1页 / 共30页
第6章 抽象类与接口jzhppt课件.ppt_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《第6章 抽象类与接口jzhppt课件.ppt》由会员分享,可在线阅读,更多相关《第6章 抽象类与接口jzhppt课件.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第6章 抽象类与接口jzh第第6 6章章 抽象类、接口、包抽象类、接口、包JavaJava程序设计基础程序设计基础主要内容:主要内容:p抽象类与抽象方法抽象类与抽象方法p接口接口p包包在在JavaJava语言中语言中, ,一个类可以是抽象的一个类可以是抽象的抽象类使用关键字抽象类使用关键字abstractabstract来描述来描述 public class Exam1public class Exam1 public public abstractabstract class Exam2 class Exam2 抽象类抽象类普通类普通类抽象类和抽象方法(1)抽象类不能生成它的实例对象抽象类不

2、能生成它的实例对象 public public abstractabstract class Exam2 class Exam2 public class Text public class Text public void doTest() public void doTest() Exam2 ex2 = new Exam2(); Exam2 ex2 = new Exam2(); 编译错误编译错误:抽象类不能使用抽象类不能使用new运算符来生成它运算符来生成它的实例对象的实例对象抽象类和抽象方法(2)在在JavaJava语言中语言中, ,一个方法也可以是抽象的一个方法也可以是抽象的抽象方法也

3、是使用关键字抽象方法也是使用关键字abstractabstract来描述来描述 public abstract class Exam2public abstract class Exam2 public public abstractabstract void doSomething(); void doSomething(); public void doOthers() public void doOthers() 抽象方法抽象方法抽象类和抽象方法(3)抽象方法没有方法体抽象方法没有方法体, ,也称为没有实现的方法也称为没有实现的方法 public abstract class Exam2

4、public abstract class Exam2 public public abstractabstract void doSomething void doSomething();(); public void doOthers() public void doOthers() 抽象方法以分号结束抽象方法以分号结束抽象类和抽象方法(4)一个类里面有抽象方法一个类里面有抽象方法, ,这个类也必须是抽象的这个类也必须是抽象的 public public abstractabstract class Exam2 class Exam2 public public abstractabstr

5、act void doSomething(); void doSomething(); public void doOthers() public void doOthers() 抽象方法决定了这个类也是抽象的抽象方法决定了这个类也是抽象的抽象类和抽象方法(5)抽象类一般是用来生成子类的抽象类一般是用来生成子类的在抽象类的子类中在抽象类的子类中, ,需要重写需要重写/ /覆盖抽象类中的抽象方法覆盖抽象类中的抽象方法, ,也叫做实也叫做实现抽象方法现抽象方法如果在子类中没有实现抽象父类中的所有抽象方法如果在子类中没有实现抽象父类中的所有抽象方法, ,则这个子类也则这个子类也是一个抽象的类是一个抽

6、象的类privateprivate和和staticstatic的方法不能声明为抽象的的方法不能声明为抽象的抽象类和抽象方法(6) public abstract class Exam2 public abstract class Exam2 public public abstractabstract void doSomething(); void doSomething(); public void doOthers() public void doOthers() public class SubExam1 extends Exam2 public class SubExam1 exte

7、nds Exam2 public void doSomething() public void doSomething() 子类实现了抽象类中的抽象方法子类实现了抽象类中的抽象方法抽象类和抽象方法(7) public abstract class Exam2 public abstract class Exam2 public public abstractabstract void doSomething(); void doSomething(); public void doOthers() public void doOthers() public public abstractabs

8、tract class SubExam2 class SubExam2 extends Exam2 extends Exam2 public void doMore() public void doMore() 子类没有实现抽象类中的抽象方法子类没有实现抽象类中的抽象方法,所以子类也是抽所以子类也是抽象类象类抽象类和抽象方法(8)面向对象的程序设计/接口1如何自定义接口如何自定义接口定义接口:定义接口: public interface 接口名称接口名称 extends 父接口名列表父接口名列表 /静态常量静态常量 publicstaticfinal 数据类型数据类型 变量名变量名=常量值;常

9、量值; /抽象方法抽象方法 publicabstract 返回值类型返回值类型 方法名方法名(参数列表参数列表); 2如何实现接口如何实现接口修饰符修饰符 class 类名类名 extends 父类名父类名 implements 接口接口A,接口接口B, 类的成员变量和成员方法;类的成员变量和成员方法; 为接口为接口A中的所有方法编写方法体,实现接口中的所有方法编写方法体,实现接口A; 为接口为接口B中的所有方法编写方法体,实现接口中的所有方法编写方法体,实现接口B;接口接口/interfacew接口是用接口是用interface关键字来定义的关键字来定义的w接口是一种特殊的接口是一种特殊的“

10、类类” ,一种特殊的,一种特殊的“抽象类抽象类”w接口中所有的方法都默认是接口中所有的方法都默认是public abstract的的w接口中所有的变量都默认是接口中所有的变量都默认是public static final的的w接口中没有构造方法接口中没有构造方法w接口可以继承,而且可以多重继承接口可以继承,而且可以多重继承w一个类可以实现多个接口一个类可以实现多个接口面向对象的程序设计/接口(1)public interface InterfaceName doSomeThing();doSomeThingElse(int k);float ff = 0.3f;每一个方法都是抽象的,没有方每一

11、个方法都是抽象的,没有方法体,只有名字和参数表法体,只有名字和参数表每一个变量都是静态的常量,都每一个变量都是静态的常量,都必须赋值必须赋值如果接口被定义成如果接口被定义成public的,则所有的变量和方法的,则所有的变量和方法也都是也都是public的的接口接口/interfacew接口是用接口是用interface关键字来定义的关键字来定义的w接口是一种特殊的接口是一种特殊的“类类” ,一种特殊的,一种特殊的“抽象类抽象类”w接口中所有的方法都默认是接口中所有的方法都默认是public abstract的的w接口中所有的变量都默认是接口中所有的变量都默认是public static fin

12、al的的w接口中没有构造方法接口中没有构造方法w接口也可以继承,而且可以多重继承接口也可以继承,而且可以多重继承w一个类可以一个类可以implements关键字来实现一个或多个接口关键字来实现一个或多个接口面向对象的程序设计/接口(2)interface IA interface IB interface IC interface ID extends IA, IB, IC 在在interface关键字关键字前面没有前面没有public访问访问控制修饰符,只在包控制修饰符,只在包里可被访问到里可被访问到接口名称之间用接口名称之间用“,”隔开,在这个例子里隔开,在这个例子里ID继承了继承了IA,

13、IB,IC中的所有接口方法中的所有接口方法根本不会用它去根本不会用它去创建实例对象创建实例对象接口接口/interfacew接口是用接口是用interface关键字来定义的关键字来定义的w接口是一种特殊的接口是一种特殊的“类类” ,一种特殊的,一种特殊的“抽象类抽象类”w接口中所有的方法都默认是接口中所有的方法都默认是public abstract的的w接口中所有的变量都默认是接口中所有的变量都默认是public static final的的w接口中没有构造方法接口中没有构造方法w接口可以继承,而且可以多重继承接口可以继承,而且可以多重继承w一个类可以一个类可以implements关键字来实现

14、一个或多个接口关键字来实现一个或多个接口面向对象的程序设计/接口(3)修饰符修饰符 class A implements IA 修饰符修饰符 class B extends A implements IB, IC 实现一个实现一个接口就是接口就是要实现它要实现它所包含的所包含的所有方法所有方法在这个例子里在这个例子里class A要实现接口要实现接口IA中的所有接口中的所有接口方法,而方法,而class B要实现要实现IB和和IC中的所有接口方法中的所有接口方法接口名之间用接口名之间用“,”隔隔开开注意:注意:如果哪怕只有一个接口方法没有实现,则那如果哪怕只有一个接口方法没有实现,则那个类也要

15、声明成个类也要声明成抽象抽象/abstract的的类与接口类与接口接口内容是定义一个或多个没有被实现而将在接口内容是定义一个或多个没有被实现而将在引用了该接口的类中实现。引用了该接口的类中实现。类自己有改变数据流的能力。接口本身没有改类自己有改变数据流的能力。接口本身没有改变数据流的能力。变数据流的能力。接口只是声明的东西,实际并不分配内存,当接口只是声明的东西,实际并不分配内存,当在类中实现了接口定义的方法后才真正编译,在类中实现了接口定义的方法后才真正编译,占用内存。占用内存。抽象类就是用来做基类的,他的派生类实现抽抽象类就是用来做基类的,他的派生类实现抽象类的方法,这个和接口类似,但是抽

16、象类只象类的方法,这个和接口类似,但是抽象类只能单继承,而接口可以多继承。能单继承,而接口可以多继承。 优点优点一个类可以继承多个接口一个类可以继承多个接口例如例如:public class A extends B implements C, D interface IA public static final double width = 100; public static final ouble height = 50; public double getArea();class B implements IA public double getArea() return width *

17、 height; public class InterfaceDemo public static void main(String s) B b = new B(); System.out.println(“Area is ”+b.getArea(); 面向对象的程序设计/接口(4)Area is 5000.0Area is 5000.0用接口用接口IA的变量的变量ia来引来引用类用类B的实例对象的实例对象因为接口是一种特殊的因为接口是一种特殊的“类类” ,一种特殊的,一种特殊的“抽象类抽象类”,所以,所以它也创建了一种数据类型它也创建了一种数据类型可以用接口的变量来引用一个类的对象,就像用

18、父类的变量来引可以用接口的变量来引用一个类的对象,就像用父类的变量来引用子类的对象一样,只要这个类实现了这个接口用子类的对象一样,只要这个类实现了这个接口面向对象的程序设计/接口(5)public class InterfaceDemo public static void main(String s) IA ia = new B(); System.out.println(“Area is ”+ia.getArea(); Area is 5000.0Area is 5000.0面向对象的程序设计/接口(6)interface IExample void method1(); void met

19、hod2();abstract class Example1 implements IExample public void method1() / class Example2 extends Example1 public void method2() 因为只实现了一个方法,所以类因为只实现了一个方法,所以类Example1需要定需要定义成抽象类义成抽象类包(包(package)文件夹文件夹用来把一些相关的类、接口放在一起的组织结构。用来把一些相关的类、接口放在一起的组织结构。 例如:例如: java.lang包包 java.applet包包 java.awt包包 java.io包包 ja

20、vax.swing包等包等 包中也可以有子包,例如:包中也可以有子包,例如: java.awt.event包包一个包中的类的完全限定名是:一个包中的类的完全限定名是: 包名包名.子包名子包名.类名类名 java.lang.Sytem类类包的名字都小写包的名字都小写包名具有层次包名具有层次分隔用句点分隔用句点面向对象程序设计基础包uJava系统提供了很多已经写好的包系统提供了很多已经写好的包数学计算、输入数学计算、输入/输出、字符串操作输出、字符串操作尽量利用已有的包、避免重复工作尽量利用已有的包、避免重复工作u使用包中类使用包中类利用利用import 语句指定类的位置语句指定类的位置例如例如:

21、 import ;面向对象程序设计基础包1创建包创建包包语句格式:包语句格式: package 包名包名.子包名子包名;包语句必须是包语句必须是Java 源文件中的第一条语句源文件中的第一条语句(除注释行除注释行外外)。没有包定义语句,则没有包定义语句,则java认为它在缺省包(没有包名认为它在缺省包(没有包名的包)中。的包)中。2导入包中的类导入包中的类import 包名包名.类名;类名;import 包名包名.*;如果没有如果没有import语句,也可以使用类的完全限定名:语句,也可以使用类的完全限定名: 包名包名.类名类名面向对象程序设计基础创建包和使用包 package mylib.m

22、yclasses;public class Birthday private int year, month, day;/分别表示年月日分别表示年月日 public Birthday( ) public Birthday(int year, int month, int day) this(year, month); this.day=day; public String toString() return 出生年月:出生年月:+year+年年+month+月月+day+日日; 面向对象程序设计基础创建包和使用包 /Test.javaimport mylib.myclasses.Birthda

23、y;public class Test public static void main(String args) Birthday obj=new Birthday(1990,11,12); System.out.println(obj.toString(); String str=obj.setYear(1988).setMonth(8).setDay(28).toString(); System.out.println(str); 面向对象程序设计基础创建包和使用包 源文件结构源文件结构源文件只能有一个公共类源文件只能有一个公共类(public class),可包含多个非,可包含多个非公共

24、类。公共类。源文件名必须与公共类名完全相同。源文件名必须与公共类名完全相同。文件的后缀名为文件的后缀名为java。创建包创建包(package)的语句必须位于源文件的第的语句必须位于源文件的第1行。行。有导入有导入(import)语句,必须位于包语句和类声明之间。语句,必须位于包语句和类声明之间。包语句和导入语句后是类的声明(类头)和放在花括号中包语句和导入语句后是类的声明(类头)和放在花括号中的类体。的类体。类体中包含类的变量声明、构造方法定义和方法定义,他类体中包含类的变量声明、构造方法定义和方法定义,他们都放在类声明后面的花括号中。可以按任意顺序列出,但们都放在类声明后面的花括号中。可以

25、按任意顺序列出,但通常类中先声明变量、后定义构造方法、再定义其他方法。通常类中先声明变量、后定义构造方法、再定义其他方法。没有导入语句,则程序中使用该类的完全限定名:包名没有导入语句,则程序中使用该类的完全限定名:包名.类名类名面向对象程序设计基础源文件结构 生成程序说明文档生成程序说明文档文档注释:文档注释: /*文档注释文档注释*/文档注释写在类声明、变量声明和方法定义的前面,文档注释写在类声明、变量声明和方法定义的前面,分别对类、变量和方法作出说明。分别对类、变量和方法作出说明。文档注释可以对方法参数、返回值等进行说明:文档注释可以对方法参数、返回值等进行说明: param 方法参数名方

26、法参数名 说明文字说明文字 return 返回类型说明返回类型说明在命令行使用:在命令行使用: javadoc 源程序名源程序名.java 可从可从java源程序中提取这些文档注释,并生成具有源程序中提取这些文档注释,并生成具有JavaAPI文档风格的程序说明文档。文档风格的程序说明文档。生成程序说明文档package mylib.myclasses.mygraph;/*MyPoint类用来创建平面坐标系中的一个点类用来创建平面坐标系中的一个点(x,y)。*/public class MyPoint /*点的点的x坐标坐标*/ protected int x; /*点的点的x坐标坐标*/ pr

27、otected int y; /*构造方法,点坐标值设置为构造方法,点坐标值设置为(0,0)*/ public MyPoint( ) System.out.println(调用调用MyPoint类的无参数构造方法类的无参数构造方法); 生成程序说明文档/*构造方法,创建一个坐标值为构造方法,创建一个坐标值为(x,y)的点的点 * param x 点的点的x坐标坐标 * param y 点的点的y坐标坐标 */ public MyPoint(int x,int y) this.x=x; this.y=y; /*设置点的设置点的x坐标坐标 * param x 用来给类中变量用来给类中变量x赋值赋值

28、 * return 没有返回值没有返回值 */ public void setX(int x) this.x=x; 生成程序说明文档 /*得到点的得到点的x坐标坐标 * param 该方法没有参数该方法没有参数 * return 该方法返回点的该方法返回点的x坐标坐标 */ public int getX() return x; /*设置点的设置点的y坐标坐标*/ public void setY(int y) this.y=y; /*得到点的得到点的y坐标坐标*/ public int getY() return y; /*返回点坐标的字符串表示返回点坐标的字符串表示(x,y) * return 该方法返回字符串该方法返回字符串 */ public String toString() return (+x+,+y+);

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁