实验五 Java接口的定义与使用


接口的定义与使用 实验目的: 1. 学习结构定义的语法格式 2. 学习接口成员变量的定义 3. 学习接口成员方法的定义 4. 学习接口实现的语法格式。 5. 学习使用接口实现多继承的方法。 实验内容: 1. 编写一个 Java 程序,在程序中定义一个接口 Shape,定义一个类 Cylinder 实现接口 Shape, 在 Cylinder 类中实现 Shape 接口中的抽象方法。 (1)运行效果: (2)程序模板: //MyInterface.java import java.text.DecimalFormat; interface Shape{ 【代码 1】//定义一个成员变量 pi,单精度浮点类型,初始值为 3.14 【代码 2】//定义一个成员方法 area(),返回值为 double 类型 【代码 3】//定义一个成员方法 volume(),返回值为 double 类型 } class Cylinder 【代码 4】{ //实现接口 Shape private double radius; private int height; public Cylinder(double r,int h){ this.radius=r; this.height=h; } 【代码 5】//实现接口 Shape 中的 area()方法,该方法返回 pi*radius*radius 的值 【代码 6】//实现接口 Shape 中的 volume()方法,该方法返回 area()*height 的值 } class MyInterface{ public static void main(String[] args){ Cylinder a=new Cylinder(1.2,3); DecimalFormat myFormat=new DecimalFormat("0.00"); //设置输出格式 System.out.println("圆柱体的面积是"+myFormat.format(a.area())); System.out.println("圆柱体的体积是"+myFormat.format(a.volume())); } } 2. 设计几何图形(Shape)、矩形(Rectangle)、圆形(Circle)、正方形(Square),能够用 接口和多态性计算几何图形的面积(area)和周长(perimeter),并显示出来。 提示:矩形、圆形、正方形都是几何图形。可以将几何图形设计成接口,具有计算面积 和周长的功能。矩形、圆形、正方形设计成类,各自实现几何图形接口的计算面积和周 长的功能。 (1)运行效果 (2)程序模板 /** * Shape.java * 接口 */ interface Shape { 【代码 1_1】//定义一个成员方法 area(),返回值为 double 类型 【代码 1_2】//定义一个成员方法 perimeter(),返回值为 double 类型 } /** * Rectangle.java * 实现类 */ public class Rectangle implements Shape { 【代码 2_1】//定义两个私有类型的成员变量分别表示矩形的长和宽 【代码 2_2】//定义一个构造函数对成员变量进行初始化 【代码 2_3】//实现接口 Shape 中的 area()方法 【代码 2_4】//实现接口 Shape 中的 perimeter()方法 } /** * Circle.java * 实现类 */ public class Circle implements Shape { 【代码 3_1】//定义一个私有类型的成员变量表示圆的半径 【代码 3_2】//定义一个构造函数对成员变量进行初始化 【代码 3_3】//实现接口 Shape 中的 area()方法 【代码 3_4】//实现接口 Shape 中的 perimeter()方法 } /** * Square.java * 实现类 */ public class Square implements Shape { 【代码 4_1】//定义一个私有类型的成员变量表示正方形的边长 【代码 4_2】//定义一个构造函数对成员变量进行初始化 【代码 4_3】//实现接口 Shape 中的 area()方法 【代码 4_4】//实现接口 Shape 中的 perimeter()方法 } /** * ShapeTest.java * 测试类,利用接口和多态性计算面积和周长,并显示出来。 */ public class ShapeTest { public static void print(Shape shape){ System.out.println(shape.getClass()+":"+"面积:"+shape.area()); System.out.println(shape.getClass()+":"+"周长:"+shape.perimeter()); } public static void main(String[] args) { Shape shape=new Rectangle(4,5); print(shape); shape=new Circle(4); print(shape); shape=new Square(5); print(shape); } } 3. 编写接口和实现类。动物(Animal)能够动,鸟(Bird)会飞翔,老虎(Tiger)会跑, 鱼(Fish)会游泳。然后测试运行结果。 4. 编写接口、抽象类和实现类。树(Tree)有树根(Root)、树 干(Bolo)、树 枝(Branch)、 树叶(Leaf),柳树(Osier)也有树根、树干、树枝、树叶,但没有花(Flower)。然后 测试运行结果。 提示:设计 Root、Branch、Leaf、Flower 四个接口 设计类 Tree 实现 Root、Branch、Leaf 三个接口 设计类 Osier 为 Tree 的子类,实现 Flower 接口 运行结果: 附录 1 实验内容 1 的完整代码 //MyInterface.java import java.text.DecimalFormat; interface Shape{ //【代码 1】定义一个成员变量 pi,单精度浮点类型,初始值为 3.14 public static float pi=3.14f; //【代码 2】定义一个成员方法 area(),返回值为 double 类型 public abstract double area(); //【代码 3】定义一个成员方法 volume(),返回值为 double 类型 public abstract double volume(); } class Cylinder implements Shape{ //【代码 4】实现接口 Shape private double radius; private int height; public Cylinder(double r,int h){ this.radius=r; this.height=h; } //【代码 5】实现接口 Shape 中的 area()方法,该方法返回 pi*radius*radius 的值 public double area(){ return pi*radius*radius; } //【代码 6】实现接口 Shape 中的 volume()方法,该方法返回 area()*height 的值 public double volume(){ return area()*height; } } class MyInterface{ public static void main(String[] args){ Cylinder a=new Cylinder(1.2,3); DecimalFormat myFormat=new DecimalFormat("0.00"); System.out.println("圆柱体的面积是"+myFormat.format(a.area())); System.out.println("圆柱体的体积是"+myFormat.format(a.volume())); } } 附录 2 实验内容 2 的完整代码 /** * Shape.java * 接口 */ public interface Shape { public double area(); //计算面积 public double perimeter(); //计算周长 } /** * Rectangle.java * 实现类 */ public class Rectangle implements Shape { private double a; //长或宽 private double b; //长或宽 /** * @param a * @param b */ public Rectangle(double a, double b) { this.a = a; this.b = b; } @Override public double area() { return a*b; } @Override public double perimeter() { return 2*(a+b); } } /** * Circle.java * 实现类 */ public class Circle implements Shape { private double radius; //半径 /** * @param radius */ public Circle(double radius) { this.radius = radius; } @Override public double area() { return Math.PI*radius*radius; } @Override public double perimeter() { return 2*Math.PI*radius; } } /** * Square.java * 实现类 */ public class Square implements Shape { private double a; //边长 /** * @param a */ public Square(double a) { this.a = a; } @Override public double area() { return a*a; } @Override public double perimeter() { return 4*a; } } /** * ShapeTest.java * 测试类,利用接口和多态性计算面积和周长,并显示出来。 */ public class ShapeTest { public static void print(Shape shape){ System.out.println(shape.getClass()+":"+"面积:"+shape.area()); System.out.println(shape.getClass()+":"+"周长:"+shape.perimeter()); } /** * @param args */ public static void main(String[] args) { Shape shape=new Rectangle(4,5); print(shape); shape=new Circle(4); print(shape); shape=new Square(5); print(shape); } } 附录 3 实验内容 3 的完整代码 /** * Animal.java * 接口 */ public interface Animal { void move(); //能够动 } /** * Bird.java * 实现类 */ public class Bird implements Animal { @Override public void move() { System.out.println("鸟(Bird)会飞翔"); } } /** * Tiger.java * 实现类 */ public class Tiger implements Animal { @Override public void move() { System.out.println("老虎(Tiger)会跑"); } } /** * Fish.java * 实现类 */ public class Fish implements Animal { @Override public void move() { System.out.println("鱼(Fish)会游泳"); } } /** * AnimalTest.java * 测试类,利用接口和多态性。 */ public class AnimalTest { /** * @param args */ public static void main(String[] args) { new Bird().move(); new Tiger().move(); new Fish().move(); } } 附录 4 实验内容 4 的完整代码 /** * Root.java * 接口 */ public interface Root { void root(); //抽象方法 } /** * Bolo.java * 接口 */ public interface Bolo { void bolo(); } /** * Branch.java * 接口 */ public interface Branch { void branch(); } /** * Leaf.java * 接口 */ public interface Leaf { void leaf(); } /** * Flower.java * 接口 */ public interface Flower { void flower(); } /** * Tree.java * 实现类 */ public class Tree implements Root, Bolo, Branch, Leaf { @Override public void root() { //实现接口的抽象方法 show("土壤中","吸收养份"); } @Override public void bolo() { show("地面","传递养份"); } @Override public void branch() { show("树干上","传递养份"); } @Override public void leaf() { show("树梢","光合作用"); } void show(String part,String function){ //增加新的方法 System.out.println("位置:"+part+" 功能:"+function); } } /** * Osier.java * 子类,实现类 */ public class Osier extends Tree implements Flower { @Override public void flower() { //实现接口 Flower 中的抽象方法 super.show("柳树没有花","无"); //调用父类中的方法 } @Override public void leaf() { //重写父类中的方法,扩展方法的功能 super.leaf(); System.out.println("颜色:绿色"); } } //TreeTest.java public class TreeTest { /** * @param args */ public static void main(String[] args) { Osier tree = new Osier(); System.out.println("柳树树根:"); tree.root(); System.out.println("柳树树干:"); tree.bolo(); System.out.println("柳树树枝:"); tree.branch(); System.out.println("柳树叶子:"); tree.leaf(); System.out.println("柳树花:"); tree.flower(); } }
还剩12页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

610587347

贡献于2014-12-07

下载需要 3 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf