Logo

郎哥编程

接口中的静态常量

2019-12-20 247

接口中可以定义静态常量,但不能定义成员变量。静态常量使用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);
 
    }
 
}

程序执行结果如下图所示:


 image.png


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论