探究java接口中的变量与方法
2016-09-13 11:43
246 查看
关于变量
java接口里的变量都是默认 pubic static final的为啥?
public 接口得能被所有对象调用
static 这个变量是属于接口本身,而不是实现了接口的对象的 具体来说
至于这个问题,是和Java语言的本身机制有关。我们知道Java不支持多继承,但是一个类可是现实多个接口。我们假设有两个接口A和B,而类C实现了接口A和B。假设,此时,A和B中都有一个变量N,如果N不是static类型的,那么在C中该如何区分N到底是A的还是B的呢?而,如果是static类型的,我们可以通过A.N和B.N来区别调用A或者B中的成员变量N。
final 如果变量不是final,那么每个实现接口的类就可以更改这个变量的值,也就违反了OCP原则。
所以下面的声明方式都是OK的
interface TestI{ int a=5; static int b=12; final int k=10; }不过如果你直接给接口里扔一个int c,且没有指定值就不行了,为什么?因为它是final
关于方法
这个得分java的版本来说在jdk1.7下
interface TestI{ void a(); abstract void b(); //Illegal modifier for the interface method c; only public & abstract are permitted // protected void c(); // static void d(){ // System.out.println(13); // }; }看到了把,在1.7下方法可以是public或者abstract的,但是不能出现final或者static,static的情况
interface TestI{ void a(); public void k(); abstract void b(); //Illegal modifier for the interface method c; // only public & abstract are permitted // final void c(); // protected void c(); // static void d(){ // System.out.println(13); // }; }不过在jdk1.8下
interface TestI{ void a(); public void k(); abstract void b(); //static void f2(); 这个不行 必须得有方法体 //同理default也得有方法体 static void d(){ System.out.println(13); }; default void ss(String zoneString) { System.out.println(123); } }看到了吧static和default可以修饰方法了,而且得也有方法体
参考资料
关于接口中的变量http://blog.csdn.net/qiumengchen12/article/details/44852023
关于final的使用
http://blog.csdn.net/dlf123321/article/details/44493691
相关文章推荐
- 探究java接口中的变量与方法
- 黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)
- 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围
- 黑马程序员——java第七天:面向对象(继承、子父类之变量、final、抽象、模板方法、接口)
- 2018/01/08JAVA 基础 / 接口与继承 / JAVA的修饰符FINAL详解:final修饰类、方法、基本变量、引用、常量
- Java继承关系中,父类方法使用实例变量和调用实例方法的探究
- java 接口中用private、protected、public、default和status修饰方法和变量
- Java语言中,包名、类名、接口名、方法名、变量名,以及常量名的命名有何规范的命名习惯
- Java的变量、方法、类及接口
- java接口里的变量和方法修饰符
- Java接口成员变量和方法默认修饰符
- Java中类、接口、变量、方法、属性、常量的命名规则
- Java Lambda(语言篇——lambda,方法引用,目标类型,默认方法,函数接口,变量捕获)
- 【Java基础】包、类、接口、常量、方法、变量的命名规则
- Java接口中的变量和方法默认的类型<转>
- java接口类型变量能调用已经被实现的这个接口的方法吗
- Java语言中,包名、类名、接口名、方法名、变量名,以及常量名的命名有何规范的命名习惯
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- Java方法和变量的继承问题
- [学习笔记]java Enumeration接口方法的学习