第八章接口和包PPT讲稿.ppt
《第八章接口和包PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第八章接口和包PPT讲稿.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章接口和包第1页,共35页,编辑于2022年,星期三Java程序设计的步骤程序设计的步骤1、先定义抽象类或接口、先定义抽象类或接口2、通过继承或实现完成(使其具体化)相应子类的定义、通过继承或实现完成(使其具体化)相应子类的定义3、将这些类编译后打包、将这些类编译后打包,即在,即在类文件前加类文件前加package 包名包名4、以后应用可直接通过、以后应用可直接通过import 包名包名.类名类名 引用包引用包5、这样设计的、这样设计的java程序,主函数简单明了程序,主函数简单明了第2页,共35页,编辑于2022年,星期三抽象类和方法抽象类和方法抽象类是专门设计为子类继承的类,抽象类通常
2、都包括一个或多个抽象类是专门设计为子类继承的类,抽象类通常都包括一个或多个抽象方法(只有方法说明,没有方法体),抽象方法体中内容,根抽象方法(只有方法说明,没有方法体),抽象方法体中内容,根据继承抽象类的子类的实际情况,有子类完成其抽象方法的代码。据继承抽象类的子类的实际情况,有子类完成其抽象方法的代码。定义抽象类的一般形式定义抽象类的一般形式abstract class 类名称类名称 成员变量;成员变量;方法();方法();/定义一般方法定义一般方法 abstract 方法();方法();/定义抽象方法定义抽象方法注意无论抽象类注意无论抽象类和抽象方法都以和抽象方法都以关键字关键字abstr
3、act 开头开头第3页,共35页,编辑于2022年,星期三说明:说明:(1)抽象类体中,可以包含抽象方法,也可以)抽象类体中,可以包含抽象方法,也可以不包含抽象方法,但是类体中包含抽象方法的不包含抽象方法,但是类体中包含抽象方法的类必须定义为抽象类。类必须定义为抽象类。(2)抽象类不能实例化,即使抽象类中没有抽象抽象类不能实例化,即使抽象类中没有抽象方法,也不能实例化。方法,也不能实例化。(3)抽象类的子类只有给出每个抽象方法的方)抽象类的子类只有给出每个抽象方法的方法体,即覆盖每个抽象方法后,才能创建子类法体,即覆盖每个抽象方法后,才能创建子类对象。如果一个抽象方法未在子类中覆盖,该对象。如
4、果一个抽象方法未在子类中覆盖,该子类也必须申明为抽象方法。子类也必须申明为抽象方法。第4页,共35页,编辑于2022年,星期三抽象类的实现抽象类的实现科技书类科技书类读者群读者群科技人员科技人员显示图书种类显示图书种类计算图书价格计算图书价格计算打折折扣计算打折折扣文艺书类文艺书类读者群读者群大众人员大众人员显示图书种类显示图书种类计算图书价格计算图书价格计算打折折扣计算打折折扣教材类教材类读者群读者群学生学生显示图书种类显示图书种类计算图书价格计算图书价格计算打折折扣计算打折折扣三类图书不存在继承关系,它们虽然都具有显示图书种类、计算三类图书不存在继承关系,它们虽然都具有显示图书种类、计算图
5、书价格、计算打折折扣的功能,但具体计算办法不同,这时可图书价格、计算打折折扣的功能,但具体计算办法不同,这时可以通过定义抽象类先确定它们的共同属性和要做的事(抽象方法)以通过定义抽象类先确定它们的共同属性和要做的事(抽象方法),然后再子类中分别实现这些抽象方法。这样做的好处是简化程,然后再子类中分别实现这些抽象方法。这样做的好处是简化程序设计,易排错,提高编程效率。序设计,易排错,提高编程效率。第5页,共35页,编辑于2022年,星期三abstract class Book8_1 int bookPage;/图书页码图书页码 float discount;/图书折扣图书折扣 double pr
6、ice;/图书价格图书价格 abstract void show();/显示图书种类显示图书种类 abstract double getPrice(int bookPage,float discount);public Book8_1(int bookpage,float discount)/构造方法构造方法 this.bookPage=bookPage;this.discount=discount;public void show_price()/显示价格显示价格 System.out.println(this books price is+price);定义抽象类:定义抽象类:以上完成了定
7、义抽象类,将它作为父类由子类继承以上完成了定义抽象类,将它作为父类由子类继承第6页,共35页,编辑于2022年,星期三class Science_book extends Book8_1 /定义科技书类定义科技书类 public Science_book(int bookPage,float discount)super(bookPage,discount);/引用父类的构造方法引用父类的构造方法 public void show()/实现抽象类方法实现抽象类方法 System.out.println(this books kind is science);public double getP
8、rice(int bookPage,float discount)return bookPage*0.1*discount;class Literrature_book extends Book8_1 /定义文艺书类定义文艺书类 public Literrature_book(int bookPage,float discount)super(bookPage,discount);public void show()System.out.println(this books kind is Literrature);public double getPrice(int bookPage,flo
9、at discount)return bookPage*0.08*discount;第7页,共35页,编辑于2022年,星期三class Teaching_book extends Book8_1 /定义教材类定义教材类 public Teaching_book(int bookPage,float discount)super(bookPage,discount);public void show()System.out.println(this books kind is Teaching);public double getPrice(int bookPage,float discoun
10、t)return bookPage*0.05*discount;三种图书在定义自己的构造方法时,继承了父类的构造方法,实三种图书在定义自己的构造方法时,继承了父类的构造方法,实现了显示图书种类和计算图书价格的抽象方法。现了显示图书种类和计算图书价格的抽象方法。下面编制科技图书类、文艺图书类和教材类对象,以及引用它们的方法。下面编制科技图书类、文艺图书类和教材类对象,以及引用它们的方法。第8页,共35页,编辑于2022年,星期三public class Booksell8_1 public static void main(String args)Science_book bb=new Scie
11、nce_book(530,0.7f);/创建科技书类对象创建科技书类对象 bb.price=(int)bb.getPrice(530,0.7f);/引用科技书类方法,计算图书价格引用科技书类方法,计算图书价格 bb.show();/显示图书种类显示图书种类 bb.show_price();/引用父类方法,显示图书价格引用父类方法,显示图书价格 Literrature_book ll=new Literrature_book(530,0.7f);/创建文艺书类对象创建文艺书类对象 ll.price=(int)ll.getPrice(530,0.7f);/引用文艺书类方法,计算图书价格引用文艺书类
12、方法,计算图书价格 ll.show();/显示图书种类显示图书种类 ll.show_price();/引用父类方法,显示图书价格引用父类方法,显示图书价格 Teaching_book tt=new Teaching_book(530,0.7f);/创建教材类对象创建教材类对象 tt.price=(int)tt.getPrice(530,0.7f);/引用教材类方法,计算图书价格引用教材类方法,计算图书价格 tt.show();/显示图书种类显示图书种类 tt.show_price();/引用父类方法,显示图书价格引用父类方法,显示图书价格 第9页,共35页,编辑于2022年,星期三例例8-2有
13、多个类分别是有多个类分别是Shape类、类、Point类、类、Circle类和类和 Cylinder类,他们的关系类,他们的关系如图:如图:程序采取先定义一个抽象类程序采取先定义一个抽象类Shape,通过继承关系生成,通过继承关系生成Point类,再通类,再通过继承过继承Point类生成类生成Circle类,最后通过继承类,最后通过继承Circle类生成类生成 Cylinder类。类。每一个类都是继承上一个类,而每一个类都是对它的父类的继承和扩每一个类都是继承上一个类,而每一个类都是对它的父类的继承和扩充。并且实现了抽象类中定义的抽象方法充。并且实现了抽象类中定义的抽象方法多继承的实现多继承的
14、实现 本程序有本程序有Shape8_2java、Point8_2.java、Circle8_2.java、Cylinder8_2.java四个配套文件四个配套文件,它们不需要进行单独编译它们不需要进行单独编译抽象类只给出方案,由继承它的子类去实现定义的抽象方法抽象类只给出方案,由继承它的子类去实现定义的抽象方法 第10页,共35页,编辑于2022年,星期三/多继承的实现多继承的实现 Show8_2.java 配套文件配套文件 1/抽象类只给出方案,由继承它的子类去实现定义的抽象方法抽象类只给出方案,由继承它的子类去实现定义的抽象方法 public abstract class Shape8_2
15、 public double area()return 0.0;public double volume()return 0.0;public abstract String getName();/多继承的实现多继承的实现 Show8_2.java配套文件配套文件 2/抽象类只给出方案,由继承它的子类去实现定义的抽象方法抽象类只给出方案,由继承它的子类去实现定义的抽象方法 public class Point8_2 extends Shape8_2 protected int x,y;/coordinates of the Point public Point8_2(int a,int b)s
16、etPoint(a,b);public void setPoint(int a,int b)x=a;y=b;public int getX()return x;public int getY()return y;public String toString()return+x+,+y+;public String getName()return Point;第11页,共35页,编辑于2022年,星期三/多继承的实现多继承的实现 Show8_2配套文件配套文件 3/抽象类只给出方案,由继承它的子类去实现定义的抽象方法抽象类只给出方案,由继承它的子类去实现定义的抽象方法 public class
17、Circle8_2 extends Point8_2 protected double radius;public Circle8_2(double r,int a,int b)super(a,b);setRadius(r);public void setRadius(double r)radius=(r0?r:0);public double getRadius()return radius;public double area()return Math.PI*radius*radius;public String toString()return Center=+super.toStrin
18、g()+Radius=+radius;public String getName()return Circle;第12页,共35页,编辑于2022年,星期三/多继承的实现多继承的实现 Show8_2.java配套文件配套文件 4/抽象类只给出方案,由继承它的子类去实现定义的抽象方法抽象类只给出方案,由继承它的子类去实现定义的抽象方法 public class Cylinder8_2 extends Circle8_2 protected double height;public Cylinder8_2(double h,double r,int a,int b)super(r,a,b);set
19、Height(h);public void setHeight(double h)height=(h0?h:0);public double getHeight()return height;public double area()return 2*super.area()+2*Math.PI*radius*height;public double volume()return super.area()*height;public String toString()return super.toString()+Height=+height;public String getName()ret
20、urn Cylinder;第13页,共35页,编辑于2022年,星期三import javax.swing.JOptionPane;public class Show8_2 public static void main(String args)Point8_2 point=new Point8_2(7,11);/创建创建Point对象并引用对象并引用Point类带参数的构造类带参数的构造方法方法 Circle8_2 circle=new Circle8_2(3.5,22,8);Cylinder8_2 cylinder=new Cylinder8_2(10,3.3,10,10);Shape8_
21、2 arrayOfShapes=new Shape8_23;arrayOfShapes0=point;arrayOfShapes1=circle;arrayOfShapes2=cylinder;String output=point.getName()+:+point.toString()+n+circle.getName()+:+circle.toString()+n+cylinder.getName()+:+cylinder.toString();JOptionPane.showMessageDialog(null,output,Demonstring Polymorphism,JOpti
22、onPane.INFORMATION_MESSAGE);/屏幕上输出结果屏幕上输出结果 System.exit(0);第14页,共35页,编辑于2022年,星期三多继承接接 口口 接口是用来实现类间多重继承的结构模式。接口类似于抽象接口是用来实现类间多重继承的结构模式。接口类似于抽象类和抽象方法,它只提供一些方法模板,自己不去实现而由其他类和抽象方法,它只提供一些方法模板,自己不去实现而由其他类去实现。接口的关键字为类去实现。接口的关键字为 interface第15页,共35页,编辑于2022年,星期三定义接口定义接口接口是一种特殊的类,它由两部分组成:接口说明和接口体。接口是一种特殊的类,它
23、由两部分组成:接口说明和接口体。一般形式为:一般形式为:访问权限访问权限 interface 接口名接口名 extends 父接口名父接口名1,父接口名父接口名n ./接口体程序接口体程序接口体中只允许有常量和抽象方法,接口的访问权限只有两种,接口体中只允许有常量和抽象方法,接口的访问权限只有两种,public 和缺省状态。使用和缺省状态。使用public修饰的接口可以被所有的类和接口使用,而缺省修饰的接口可以被所有的类和接口使用,而缺省状态只能被同一包中的其他接口和状态只能被同一包中的其他接口和l类使用类使用接口类的实现接口类的实现class 类名类名 implements 接口名接口名1,
24、接口名,接口名2,第16页,共35页,编辑于2022年,星期三接口的特点接口的特点1、接口可以定义多继承、接口可以定义多继承2、接口允许没有父接口,即接口不存在最高层,类有最高层、接口允许没有父接口,即接口不存在最高层,类有最高层Object3、接口中的方法只能被声明为、接口中的方法只能被声明为public和和abstract,如果不声明。则默认为,如果不声明。则默认为public abstract;接口中的成员变量只能用接口中的成员变量只能用public、static和和final定义,如果不声明则默认定义,如果不声明则默认为为 public static final。4、接口中的方法都是使
25、用、接口中的方法都是使用abstract 修饰的方法,在接口中指给出方法修饰的方法,在接口中指给出方法名、返回值和参数表。而不能定义方法体。名、返回值和参数表。而不能定义方法体。5、抽象类的方法在实现时都要设定为、抽象类的方法在实现时都要设定为public属性,否则会产生访问权限错误属性,否则会产生访问权限错误6、接口不是类,接口中不能定义构造方法、接口不是类,接口中不能定义构造方法第17页,共35页,编辑于2022年,星期三/通过接口定义多继承,接口中只给出方法名、返回值和参数表通过接口定义多继承,接口中只给出方法名、返回值和参数表 例例8_3/不能定义方法体不能定义方法体 interfac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 接口 PPT 讲稿
限制150内