黑马程序员技术交流社区

标题: 问一个关于接口的问题 [打印本页]

作者: 友来友网    时间: 2014-6-10 15:31
标题: 问一个关于接口的问题
本帖最后由 友来友网 于 2014-6-12 17:17 编辑

接口的成员变量必须是 public static final
public 和 static 我可以理解,
因为接口不能实例化,
但是为什么要是final的呢
作者: 18353665932    时间: 2014-6-10 15:42
final定义的变量是只读的,一旦定义将不能被改变,定义类,他不能被继承,用于方法中,不能被重写,定义变量,变量不可变
  1. public static final String LOAN = "loan" ;
  2. LOAN = new String( "loan" ) //invalid compilation error
  3. //上面是定义变量的
  4. class PersonalLoan{
  5. public final String getName(){
  6. return "personal loan" ;
  7. }
  8. }

  9. class CheapPersonalLoan extends PersonalLoan{
  10. @Override
  11. public final String getName(){
  12. return "cheap personal loan" ; //compilation error: overridden method is final
  13. }
  14. }

  15. //上方是定义方法
  16. final class PersonalLoan{
  17. }

  18. class CheapPersonalLoan extends PersonalLoan{ //compilation error: cannot inherit from final class
  19. }


  20. //上方是定义类的
复制代码

作者: 友来友网    时间: 2014-6-10 15:47
18353665932 发表于 2014-6-10 15:42
final定义的变量是只读的,一旦定义将不能被改变,定义类,他不能被继承,用于方法中,不能被重写,定义变 ...

我知道是只读的,但是为什么接口的成员方法一定要是final的呢
作者: 18353665932    时间: 2014-6-10 15:51
因为他不能再被初始化,成员变量都是定义好的在接口中,一旦定义,在后期的函数和方法中不能就不能改变这个引用,也不能再被初始化,否则编译器会出错!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2