java接口如何定义常量 c_java接口定义常量研究
背景
和同事讨论到,在接口中定义常量的问题,引发了争论,即,假如在接口中定义变量,是否需要用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接口定义常量研究相关推荐
- 在Java中是如何定义和声明接口的?
java技术需要学习的内容有很多,本期小编整理的教程资料就是关于"在Java中是如何定义和声明接口的?"的内容,希望下面的介绍能够给大家带来帮助. 如果一个抽象类的所有方法都是抽象 ...
- Java声明定义抽象类_接口_继承_实现
文章目录 声明定义抽象类 声明定义接口 派生类.抽象类.接口的继承要点 声明定义抽象类 public abstract class CRMSystem {public abstract Client ...
- java设计一个形状shape_编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接......
导航:网站首页 > 编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接... 编程定义一个图形接口 Shape, 内含2 ...
- java定义接口必用关键字_Java中定义接口的关键字是什么
Java中定义接口的关键字是什么 Java中定义接口的关键字是"interface"."interface"是面向对象编程语言中接口操作的关键字,功能是把所需成 ...
- java的知识点13——多态、对象的转型(casting)、final关键字、抽象方法和抽象类、接口的作用、如何定义和使用接口?、接口的多继承、面向接口编程
多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1. 多态是方法的多态,不是属性的多态(多态与属性无关). 2. 多态的存在 ...
- java学习(53):接口的定义和创建
定义一个computer类 package com.company; public interface computer{ /定义公告,静态,常量/ public static final int M ...
- java定义private_java9开始——接口中可以定义private私有方法
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...
- java定义苹果类Apple_定义一个水果接口Fruit,里面定义一个表示吃水果的eat方法。定义一个苹果类Apple和一个橘子...
importjava.util.Scanner;interfaceFruit{publicvoideat();//创建一个Fruit接口,里面包含一个eat方法}classAppleimplement ...
- Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字
接口: 接口是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JD ...
最新文章
- python怎么用拼音-又一个奇葩要求,Python是如何将“中文”转“拼音”的?
- python三层装饰器-python开发学习day16 (三层装饰器;迭代器)
- 重构——39以多态取代条件表达式(Replace Conditional with Polymorphism)
- 面试宝典_Python.常规算法.0002.输出任意两个字符串中最长公共子串?
- java第二次测试笔试题_微软第二次笔试第一题java代码 已AC
- insert 多条数据 并且具有唯一标识符
- 每天进步一点点《PCA的简要学习》
- python3 md5_Python3.2 --md5
- 转:KVC与KVO机制
- python 赋值_关于 python 分片赋值
- 50个app帮你手机大换血!
- Code For Better 谷歌开发者之声——Flutter - Google 开源的移动 UI 框架
- error LNK1120: 1 个无法解析的外部命令(详细小问题解释)
- ps cc2018闪退解决方法
- 安卓使用http下载文件
- 关于Android系统中“你的手机上未安装应用程序”问题
- 计算机网络域名解析,域名解析是什么意思?
- 青龙面板使用扩展 聚看点
- Even if you get no applause, you should accept a curtain call gracefully and app
- Python【小游戏合集】之自己制作一个贪吃蛇游戏~
热门文章
- iOS开发-简单工厂模式
- 无线路由器桥接与覆盖
- IP地址不够了,有办法吗?
- VMware Server 2.0简单学习!
- 御用导航官方网站提醒提示页_电脑上使用便签记录工作计划如何设置闹钟定时提醒?...
- -m commit git_走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧
- python pil_使用Python的PIL模块来进行图片对比
- android文字广告的循环滚动,android怎样写一个循环文字滚动的TextView
- 数组中查找並返回数组_用Python查找数组中出现奇数次的那个数字
- 信号与系统2021春季课程小论文批改