java 常量接口

java 常量接口接口当中也可以定义 成员变量 但是必须使用 publicstatic 三个关键字进行修饰 从效果上看 这其实就是接口的 常用 格式 publicstatic 数据类型常量名称 数据值 接口当中的常量 可以省略 publicstatic 接口中的常量 必须进行赋值 接口中常量的名称 使用大写的字母 publicinterf public

/ * 接口当中也可以定义"成员变量", 但是必须使用public static final三个关键字进行修饰 * 从效果上看,这其实就是接口的【常用】 * 格式: * public static final 数据类型 常量名称=数据值; * * 接口当中的常量,可以省略public static final. * 接口中的常量,必须进行赋值。 * 接口中常量的名称,使用大写的字母 */ public interface MyInterfaceConst { // public static final int NUM_OF_MINE = 1; int NUM_OF_MINE = 1; }

举例说明如下:

在一个软件系统中会使用一些常量,一种流行的做法是把相关的常量放在一个专门的常量接口中定义,例如:

package com.FinalInterface; public interface MyConstants { double MATH_PI = 3.; double MATH_E = 2.71828; }

以下Circle类需要访问以上MATH_PI常量,一种方式是采用”My-Constants.MATH_PI”的形式,如下:

package com.FinalInterface; public class Circle { private double r;//半径 public Circle(double r){ this.r = r; } public double getCircumference(){ return 2 * r * MyConstants.MATH_PI; } }

还有一种方式是让Circle类中实现MyConstants接口,如下:

inport mypack.myConstants; public class Circle inplenments MyConstants{ private double r; public Circle (double r){this.rar;} public double getCircumference () {return *2 * r * MATH_PI;} public double getArea(){return r*r * MATH_PI;} }

第二种方式使得Circle类继承了MyConstants接口的常量,可以在程序中直接引用常量名,但这种方式违背了面向对象的封装思想,MATH_PI常量是Circle类的实现细节的一部分,仅仅在计算圆周长和圆面积是才会用到,没有必要向外界公开MATH_PI常量.这其实是一种向外界泄露实现的行为,会絮儿系统的可维护性. 在JDK1.5中因为了 import static 语句,它允许类直接访问另一个接口B或类B中的静态常量,而不必指定接口B或类B的名字,而且类A无须实现接口B或者继承类B。如下:

package com.FinalInterface; import static com.FinalInterface.MyConstants.*; public class Circle { private double r;//半径 public Circle(double r){ this.r = r; } public double getCircumference(){ return 2 * r * MATH_PI; } }

 import static 语句既可以简化编程,又能防止Circle类继承并公开MyConstants中的静态常量。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232483.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android expandablelistview横向,expandableListView 总结[通俗易懂]

    android expandablelistview横向,expandableListView 总结[通俗易懂]实现效果图:expandableListViewgroupIndicator图片默认是在左边,而且比较难看,而我要的是实现groupIndicator在右边自定义图片,换图片最简单的就是直接copy系统@android:drawable/expander_group?android:attr/expandableListPreferredItemIndicatorLeft?android…

    2022年6月16日
    35
  • netty 释放bytebuf_python高性能框架

    netty 释放bytebuf_python高性能框架目录一、ByteBuf介绍二、分配方式堆缓冲区直接缓冲区ByteBufAllocatorUnpooled缓冲区三、ByteBuf的操作可丢弃字节可读字节可写字节索引管理查找操作派生缓冲区引用计数工具类资源释放一、ByteBuf介绍网络数据的基本单位总是字节。JavaNIO提供了ByteBuffer作为它的字节容器…

    2022年9月19日
    1
  • BitBlt介绍

    BitBlt介绍

    2021年12月10日
    60
  • 史上最详细阿里云服务器搭建网站流程(图文教程)

    史上最详细阿里云服务器搭建网站流程(图文教程)新手如何用阿里云服务器Linux系统安装宝塔面板搭建WordPress博客网站呢?WordPress作为全球实用最广泛的CMS系统,以功能强大、扩展性强,插件众多,易扩充功能等特点,受到全球站长开发者青睐。而阿里云作为国内用户量最多的云服务器商,因此,本文以阿里云为例,详细介绍云服务器Linux系统如何安装宝塔面板搭建WordPress博客网站。新手如何用阿里云服务器Linux系统安装宝塔面板搭建WordPress博客网站呢?WordPress作为全球实用最广泛的CMS系统,以功能强大、扩展性强,插件众

    2022年6月15日
    55
  • Spirng使用Aspectj实现AOP

    Spirng使用Aspectj实现AOP

    2021年9月26日
    42
  • 单元测试用例概述

    单元测试用例概述测试的覆盖种类       1.语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。       2.判定覆盖(也叫分支覆盖):设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次。       3.条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次。       4.判定—

    2022年6月29日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号