Java语言程序设计.pptx
《Java语言程序设计.pptx》由会员分享,可在线阅读,更多相关《Java语言程序设计.pptx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、语言程序设计语言程序设计刘炯刘炯西安电子科技大学西安电子科技大学 通信工程学院通信工程学院2第十章第十章 抽象类和接口抽象类和接口n学习目标学习目标l设计并使用抽象类设计并使用抽象类l声明接口来模拟弱继承关系声明接口来模拟弱继承关系l使用使用Comparable接口定义自然顺序接口定义自然顺序l了解抽象类与接口的异和同了解抽象类与接口的异和同l声明自定义接口声明自定义接口3abstract 修饰符修饰符nabstract(抽象)类(抽象)类l不可以被实例化不可以被实例化l只能在子类被扩展和具体实现只能在子类被扩展和具体实现nabstract(抽象)方法(抽象)方法l没有具体实现,只有方法头定义
2、没有具体实现,只有方法头定义4回顾第回顾第 9 章章Shape+Shape()+getColor():String+setColor(c:String):void-color:String-filled:booleanCircle+Circle()+Circle(newRadius:double)+getRadius():double+setRadius(newRadius:double):void+getArea():double-radius:doubleRectangle+Rectangle()+Rectangle(w:double,h:double)+getWidth():double
3、+setWidth(w:double):void+getHeight():double+setHeight(h:double):void+getArea():double-width:double-height:double这个符号表示继承关系这个符号表示继承关系父类父类子类子类子类子类5Shape#Shape()+getColor():String+setColor(c:String):void+getArea():double-color:String-filled:booleanCircle+Circle()+Circle(newRadius:double)+getRadius():do
4、uble+setRadius(newRadius:double):void-radius:doubleRectangle+Rectangle()+Rectangle(w:double,h:double)+getWidth():double+setWidth(w:double):void+getHeight():double+setHeight(h:double):void-width:double-height:double抽象类抽象类父类父类子类子类子类子类抽象方法抽象方法#表示表示protected修饰符修饰符斜体表示抽象类斜体表示抽象类/抽象方法抽象方法6abstract public
5、class Shape private String color;private boolean filled;public java.util.Date createDate;public Shape()public String getColor()return color;public void setColor(String c)color=c;abstract public double getArea();public class Circle extends Shape private double radius;public Circle()public Circle(doub
6、le newRadius)radius=newRadius;public double getRadius()return radius;public void setRadius(double radius)this.radius=radius;public double getArea()return Math.PI*radius*radius;用用abstract关键字表示抽象类关键字表示抽象类用用abstract关键字表示抽象方法关键字表示抽象方法抽象方法没有方法体抽象方法没有方法体父类抽象方法的实现父类抽象方法的实现7public class Rectangle extends Sh
7、ape private double width;private double height;public Rectangle()public Rectangle(double w,double h)width=w;height=h;public double getWidth()return width;public void setWidth(double w)this.width=w;public double getHeight()return height;public void setHeight(double h)this.height=h;public double getAr
8、ea()return width*height;用用extends关键字表示继承关键字表示继承父类抽象方法的实现父类抽象方法的实现8注注 意意n非抽象类不能包含抽象方法非抽象类不能包含抽象方法n如果一个抽象父类的子类不能实现所有的抽象方如果一个抽象父类的子类不能实现所有的抽象方法,它必须声明为抽象的法,它必须声明为抽象的n换句话说,在一个由抽象类扩展出来的非抽象类换句话说,在一个由抽象类扩展出来的非抽象类中,所有的抽象方法都必须实现,即使这个子类中,所有的抽象方法都必须实现,即使这个子类不使用它们。不使用它们。n抽象类不能用抽象类不能用new运算符实例化,但仍然可以定运算符实例化,但仍然可以定
9、义它的构造方法,这种构造方法将在它子类的构义它的构造方法,这种构造方法将在它子类的构造方法中被调用。造方法中被调用。l例如,例如,Shape的构造方法在的构造方法在Circle类和类和Rectangle类中被类中被调用。调用。9注意注意n包含抽象方法的类必须是抽象的,但是,允许声包含抽象方法的类必须是抽象的,但是,允许声明没有抽象方法的抽象类。这种情况下,不能使明没有抽象方法的抽象类。这种情况下,不能使用用new操作符创建类的实例,这种类用于定义新操作符创建类的实例,这种类用于定义新子类。子类。n子类可以声明为抽象的,即使它的父类是具体的。子类可以声明为抽象的,即使它的父类是具体的。l例如,例
10、如,Object类是具体的,但是它的子类,如类是具体的,但是它的子类,如Shape,可以是抽象的可以是抽象的10注意注意n子类可以覆盖它父类的方法,并将其声明为子类可以覆盖它父类的方法,并将其声明为 abstract的。的。n这种方法非常少用,但是当父类中方法的实现在这种方法非常少用,但是当父类中方法的实现在子类中无效时,这种方法就有用了。子类中无效时,这种方法就有用了。n这种情况下,子类必须声明为抽象的。这种情况下,子类必须声明为抽象的。11注意注意n不能用不能用new运算符创建抽象类的实例,但是,抽运算符创建抽象类的实例,但是,抽象类可以用作数据类型。象类可以用作数据类型。n因此,下面的语
11、句是正确的,它创建了一个元素因此,下面的语句是正确的,它创建了一个元素是是Shape类型的数组:类型的数组:Shape shapes=new Shape10;12举例举例public class TestShape public static void main(String args)Shape shape1=new Circle(5);Shape shape2=new Rectangle(5,3);System.out.println(The two objects have the same area?+isAreaEquals(shape1,shape2);displayArea(sh
12、ape1);displayArea(shape2);public static boolean isAreaEquals(Shape object1,Shape object2)return object1.getArea()=object2.getArea();public static void displayArea(Shape object)System.out.println();System.out.println(The area is +object.getArea();13接口接口n接口(接口(interface)是一种与类相似的结构,只包)是一种与类相似的结构,只包含常量和
13、抽象方法。接口在许多方面与抽象类相含常量和抽象方法。接口在许多方面与抽象类相近,但是抽象类除了包含常量和抽象方法外,还近,但是抽象类除了包含常量和抽象方法外,还可以包含变量和具体方法可以包含变量和具体方法n为了区分接口和类,为了区分接口和类,Java采用下述语法声明接口:采用下述语法声明接口:public interface InterfaceName constant declarations;method signatures;14接口是一种特殊的类接口是一种特殊的类n在在Java中,接口被认为是特殊的类。就像通常的中,接口被认为是特殊的类。就像通常的类一样,每个接口编译为独立的字节码文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计
限制150内