实验五 包、接口 抽象类.doc
3页实验五 包、接口 抽象类【开发语言及实现平台或实验环境】Windows2000 或XP,JDK1.6与Eclipse【实验目的】1. 理解抽象类和接口概念2. 掌握接口、抽象类的设计方法3. 理解和掌握接口的实现和通过接口访问方法【实验要求】1. 理解和掌握抽象类的定义与作用2. 掌握使用系统接口的技术和创建自定义接口的方法实验内容】一.抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象如果我们要开发一个作图软件包,就会发现问题领域存在着点、线、三角形和圆等这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念1.抽象方法抽象方法的声明格式如下:abstract returnType abstractMethodName([paramlist]);抽象方法只能出现在抽象类中如果一个类中含有抽象方法,那么该类也必须声明为抽象的,否则在编译时编译器会报错2. 抽象类定义一个抽象类需要关键字abstract,其基本格式如下:abstract class ClassName{...}抽象类不能被实例化,在程序中如果试图创建一个抽象类的对象,编译时Java编译器会提示出错。
二.static 声明的成员变量/方法被视为类的成员变量/方法,而不把它当作实例对象的成员变量/方法换句话说,静态变量/方法是类固有的,可以直接引用,其它成员变量/方法仅仅被声明,生成实例对象后才存在,才可以被引用1.写出程序运行结果class StaticDemo { static int x; int y; static{ x=10;} public static int getX() { return x; } public static void setX(int newX) { x = newX; } public int getY() { return y; } public void setY(int newY) { y = newY; } public static void main(String[] args) { System.out.println("静态变量x="+StaticDemo.getX()); System.out.println("实例变量y="+StaticDemo.getY()); //非法,编译出错 StaticDemo a= new StaticDemo(); StaticDemo b= new StaticDemo(); a.setX(1); a.setY(2); b.setX(3); b.setY(4); System.out.println("静态变量a.x="+a.getX()); System.out.println("实例变量a.y="+a.getY()); System.out.println("静态变量b.x="+b.getX()); System.out.println("实例变量b.y="+b.getY()); } }静态变量x=10静态变量a.x=3实例变量a.y=2静态变量b.x=3实例变量b.y=4三.finalfinal可以修饰的对象:1)final 域//值是固定;2)final 方法//该方法不能被子类覆盖;3)final 类//该类不能派生子类四.接口的定义与作用接口可以看作是没有实现的方法和常量的集合。
接口与抽象类相似,接口中的方法只是做了声明,而没有定义任何具体的操作方法使用接口是为了解决Java 语言中不支持多重继承的问题1)定义一个接口Shape2D,利用它来实现二维的几何形状类Circle和Rectangle 面积计算编写实现接口的程序文件(2)源代码:interface Shape2D{ //定义Shape2D接口 final double pi=3.14; //数据成员一定要初始化 public abstract double area(); //抽象方法,不需要定义处理方式}class Circle implements Shape2D{ double radius; public Circle(double r){ //构造方法 radius=r; } public double area(){ return (pi * radius * radius); }}class Rectangle implements Shape2D{ int width,height; public Rectangle(int w,int h){ //构造方法 width=w; height=h; } public double area(){ return (width * height); }}public class InterfaceTester { public static void main(String args[]){ Rectangle rect=new Rectangle(5,6); System.out.println("Area of rect = " + rect.area()); Circle cir=new Circle(2.0); System.out.println("Area of cir = " + cir.area()); }}【完成实验项目】1.定义一个抽象基类Shape,它包含三个抽象方法center()、diameter()、getArea(),从Shape类派生出Square和Circle类,这两个类都用center()计算对象的中心坐标,diameter()计算对象的外界圆直径,getArea()方法计算对象的面积。
编写编写应用程序使用Rectangle类和Circle类2.定义一个接口Insurance,接口中有四个抽象方法:public int getPolicyNumber();public int getCoverageAmount();public double calculatePremium();public Date getExpiryDate()设计一个类Car,该类实现接口的方法,编写应用程序。





