背景

和同事讨论到,在接口中定义常量的问题,引发了争论,即,假如在接口中定义变量,是否需要用static来限定的问题,或者说用static和不用static会有什么区别。

引论

package spring.interfaceTest;

public interface IAnimal {

//定义成静态变量

public static int num = 10;

//定义成非静态变量

public int num2=20;

}

即上述的常量定义,到底哪个是正确的。

接口的定义

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

引用某位学者定义,interface即标准;即interface用于定义一个通用行的标准,因而interface并不会为某个特殊的类进行定义接口或者变量。那么interface是没有成员变量的,即interface定义的变量针对所有类均生效,因此变量是static的。

所以上面的定义,public static int num = 10;和public int num = 10;是等价的。

讨论1

interface的public是否必须?声明成private会怎么样?

如上面描述,interface是标准,标准是给别人用的,定义成private是没有意义的。所以interface默认就是public。

因此

private void saying();

定义这么个方法,直接编译器会报错的。

讨论2

是否可以嵌套定义内部接口

public interface IAnimal {

interface data{

int num1=1;

int num2=2;

};

}

调用

@Test

public void testDog(){

System.out.println(IAnimal.data.num1);

}

经过验证可以使用,参参照标准的定义,不难理解,只是标准嵌套标准而已,在大标准下有一个小标准。

讨论3

类里是否可以定义接口?

同理可得,将接口如果定义在类里面,也是具有同样的作用,相当于一个类持有了一个标准,那么整个类的实例都将持有这个标准。

package spring.interfaceTest;

public class Dog {

interface data{

int num1=1;

int num2=2;

};

}

同理可以使用

总结

interface作为一种标准,本身就是static,为所有类共同使用,因此不存在归属interface本身或者单独为某个类定义的变量或者方法。

java接口如何定义常量 c_java接口定义常量研究相关推荐

  1. 在Java中是如何定义和声明接口的?

    java技术需要学习的内容有很多,本期小编整理的教程资料就是关于"在Java中是如何定义和声明接口的?"的内容,希望下面的介绍能够给大家带来帮助. 如果一个抽象类的所有方法都是抽象 ...

  2. Java声明定义抽象类_接口_继承_实现

    文章目录 声明定义抽象类 声明定义接口 派生类.抽象类.接口的继承要点 声明定义抽象类 public abstract class CRMSystem {public abstract Client ...

  3. java设计一个形状shape_编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接......

    导航:网站首页 > 编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接... 编程定义一个图形接口 Shape, 内含2 ...

  4. java定义接口必用关键字_Java中定义接口的关键字是什么

    Java中定义接口的关键字是什么 Java中定义接口的关键字是"interface"."interface"是面向对象编程语言中接口操作的关键字,功能是把所需成 ...

  5. java的知识点13——多态、对象的转型(casting)、final关键字、抽象方法和抽象类、接口的作用、如何定义和使用接口?、接口的多继承、面向接口编程

    多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1. 多态是方法的多态,不是属性的多态(多态与属性无关). 2. 多态的存在 ...

  6. java学习(53):接口的定义和创建

    定义一个computer类 package com.company; public interface computer{ /定义公告,静态,常量/ public static final int M ...

  7. java定义private_java9开始——接口中可以定义private私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  8. java定义苹果类Apple_定义一个水果接口Fruit,里面定义一个表示吃水果的eat方法。定义一个苹果类Apple和一个橘子...

    importjava.util.Scanner;interfaceFruit{publicvoideat();//创建一个Fruit接口,里面包含一个eat方法}classAppleimplement ...

  9. Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字

    接口: 接口是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JD ...

最新文章

  1. python怎么用拼音-又一个奇葩要求,Python是如何将“中文”转“拼音”的?
  2. python三层装饰器-python开发学习day16 (三层装饰器;迭代器)
  3. 重构——39以多态取代条件表达式(Replace Conditional with Polymorphism)
  4. 面试宝典_Python.常规算法.0002.输出任意两个字符串中最长公共子串?
  5. java第二次测试笔试题_微软第二次笔试第一题java代码 已AC
  6. insert 多条数据 并且具有唯一标识符
  7. 每天进步一点点《PCA的简要学习》
  8. python3 md5_Python3.2 --md5
  9. 转:KVC与KVO机制
  10. python 赋值_关于 python 分片赋值
  11. 50个app帮你手机大换血!
  12. Code For Better 谷歌开发者之声——Flutter - Google 开源的移动 UI 框架
  13. error LNK1120: 1 个无法解析的外部命令(详细小问题解释)
  14. ps cc2018闪退解决方法
  15. 安卓使用http下载文件
  16. 关于Android系统中“你的手机上未安装应用程序”问题
  17. 计算机网络域名解析,域名解析是什么意思?
  18. 青龙面板使用扩展 聚看点
  19. Even if you get no applause, you should accept a curtain call gracefully and app
  20. Python【小游戏合集】之自己制作一个贪吃蛇游戏~

热门文章

  1. iOS开发-简单工厂模式
  2. 无线路由器桥接与覆盖
  3. IP地址不够了,有办法吗?
  4. VMware Server 2.0简单学习!
  5. 御用导航官方网站提醒提示页_电脑上使用便签记录工作计划如何设置闹钟定时提醒?...
  6. -m commit git_走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧
  7. python pil_使用Python的PIL模块来进行图片对比
  8. android文字广告的循环滚动,android怎样写一个循环文字滚动的TextView
  9. 数组中查找並返回数组_用Python查找数组中出现奇数次的那个数字
  10. 信号与系统2021春季课程小论文批改