本次讲解面向接口interface,其内功能为计算三角形和圆形的面积。
接口的本身反映了系统设计人员对系统的抽象理解。
接口应有两类:第一类是对一个体的抽象,它可对应为一个抽象体(abstract class);
第二类是对一个体某一方面的抽象,即形成一个抽象面(interface);
一个体有可能有多个抽象面。
抽象体与抽象面是有区别的。
接口,英文称作interface,泛指供别人调用的方法或者函数,它是对行为的抽象。
在Java中,定义一个接口的形式如下:
public interface InterfaceName {
int a;
public void f();
}
1. 接口中可以含有 变量和方法
2.接口中的变量会被隐式地指定为public static final变量(且只能是public static final变量),方法会被隐式地指定为public abstract方法且只能是public abstract方法(且只能是public abstract 方法),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。
2. 实现接口
让某一个类实现接口需要使用implements关键字,如:
class ClassName implements Interface1,Interface2,[....]{
}
================================================================================================================================
在以下完整测试中
我们会使用到四个类
1.Pillar
2. Geometry(接口)
3.Lader
4.Circle
5.Example5_14测试类
================================================================================================================================
我们来看一看代码实现
//柱体Pillar类
package com.ash.www;
public class Pillar{
Geometry bottom; //将bottom接口变量作为成员
double height;
Pillar(Geometry bottom, double height){
this.bottom = bottom;
this.height = height;
}
void changeBottom(Geometry bottom){
this.bottom = bottom;
}
public double getVolume() {
return bottom.getArea() * height;
}
}
//几何Geometry类(接口类)
package com.ash.www;
public interface Geometry { //接口
public double getArea(); //得到面积
}
//梯形Lader类
package com.ash.www;
public class Lader implements Geometry {
double a, b, h;
Lader(double a, double b, double h){
this.a = a;
this.b = b;
this.h = h;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return (1/2.0) * (a+b) * h;
}
}
//圆形Circle类
package com.ash.www;
public class Circle implements Geometry {
double r;
Circle(double r){
this.r = r;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return (3.14 * r * r);
}
}
//Example5_14测试类
package com.ash.www;
public class Example5_14 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Pillar pillar;
Geometry tuxing;
tuxing = new Lader(12, 22, 100);
System.out.println("Lader area: "+ tuxing.getArea());
pillar = new Pillar(tuxing, 58);
System.out.println("Ladered pillar volume: "+ pillar.getVolume());
tuxing = new Circle(10);
System.out.println("When the cicle radius is 10, the circle area: "+ tuxing.getArea());
pillar.changeBottom(tuxing);
System.out.println("Circled pillar volume: "+ pillar.getVolume());
}
}
看完这篇文章,你是否对面向接口interface又有了更深的了解呢?