java中的接口也可理解为功能,有点父类的特性,即实现他的类(这里理解为子类),可以赋给
该接口,然后该接口可实现子类的特性。
举个例子,画图工具,可以画圆,三角形对工具而言它可以接收任何图形并实现它,并不需
要在内部本身就有,实现工具的自定义画图。显然画图工具是接口,内含drawing()方法,然后
创建它的子类圆,三角形实现接口。对于用户而言显示的是主方法,用户只需输入图形对象,
然后程序输出该图形信息,显然主方法需要实现多态即上面说的"父类"特性。
简单代码展示
// 定义一个接口DrawTools,包含一个抽象方法drawing()
interface DrawTools {
void drawing(); // 接口中默认是抽象方法
}
// 定义一个圆形类Circle,实现DrawTools接口
class Circle implements DrawTools {
private double radiu; // 圆形半径
// 无参构造函数
public Circle() {}
// 有参构造函数
public Circle(double radiu) {
this.radiu = radiu;
}
// 实现DrawTools接口中的drawing()方法,打印圆形的半径
@Override
public void drawing() {
System.out.println("半径" + radiu);
}
}
// 定义一个三角形类Triangle,实现DrawTools接口
class Triangle implements DrawTools {
private double a; // 三角形的三条边
private double b;
private double c;
// 无参构造函数
public Triangle() {}
// 有参构造函数
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
// 实现DrawTools接口中的drawing()方法,打印三角形的三条边长
@Override
public void drawing() {
System.out.println("各三边长" + "\t" + this.a + "\t" + this.b + "\t" + this.c);
}
}
// 定义一个Demo08类,包含一个静态方法painting()和一个main()方法
public class Demo08 {
// 静态方法painting()接受一个DrawTools类型的参数d,调用d的drawing()方法
public static void painting(DrawTools d) {
d.drawing();
}
// main()方法,调用painting()方法,分别传入Circle对象和Triangle对象,绘制图形
public static void main(String args[]) {
painting(new Circle(3)); // 绘制圆形
painting(new Triangle(1, 2, 3)); // 绘制三角形
}
}