接口中可以定义静态常量,但不能定义成员变量。静态常量使用public static final关键字修饰。例如:定义MathConstant接口,接口中定义圆周率常量,代码如下:
public interface MathConstant {
//定义数学上的圆周率
double PI = 3.1415926;
}MathConstant 接口的PI虽然没有显示定义为静态常量,编译器也会为PI加上public static final关键字,将PI转换为静态常量。
为什么接口不能定义成员变量呢?
主要原因是接口不能实例化为对象,成员变量只能在对象被实例化时分配内存。而静态常量在类被加载时,Java虚拟机就会为其分配内存。
案例1:创建MathInterface接口,该接口定义一个area()方法和PI静态常量。再创建一个Circle类,该类实现MathInterface接口。
在PCoreUnit2项目新建math包,在math包下新建MathInterface接口。代码如下:
package math;
/**
* @ClassName: MathInterface
* @Description: 抽象类与接口(接口中的静态常量)案例1
* @author 编程训练营
* @date
*
*/
public interface MathInterface {
// 定义圆周率
public static final double PI = 3.1415926;
// 定义面积方法
public double area(double radius);
}MathInterface接口定义了静态常量圆周率和面积方法。
在math包建立Circle类,实现MathInterface接口。代码如下:
package math;
/**
* @ClassName: Circle
* @Description: 抽象类与接口(接口中的静态常量)案例1
* @author 编程训练营
* @date
*
*/
public class Circle implements MathInterface {
/**
* <p>Title: area</p>
* <p>Description: </p>
* @param radius
* @return
* @see math.MathInterface#area(double)
*/
@Override
public double area(double radius) {
// TODO Auto-generated method stub
return this.PI * radius * radius;
}
}在math包下新建测试类MathInterfaceTest类,测试Circle类。代码如下:
package math;
/**
* @ClassName: MathInterfaceTest
* @Description: 抽象类与接口(接口中的静态常量)案例1
* @author 编程训练营
* @date
*
*/
public class MathInterfaceTest {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// 实例化Circle对象
Circle circle = new Circle();
// 调用面积方法
double area = circle.area(6.0);
System.out.printf("面积为:%.2f",area);
}
}程序执行结果如下图所示:
