A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 友来友网 中级黑马   /  2014-6-10 15:31  /  1505 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 友来友网 于 2014-6-12 17:17 编辑

接口的成员变量必须是 public static final
public 和 static 我可以理解,
因为接口不能实例化,
但是为什么要是final的呢

3 个回复

倒序浏览
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. //上方是定义类的
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

回复 使用道具 举报
18353665932 发表于 2014-6-10 15:42
final定义的变量是只读的,一旦定义将不能被改变,定义类,他不能被继承,用于方法中,不能被重写,定义变 ...

我知道是只读的,但是为什么接口的成员方法一定要是final的呢
回复 使用道具 举报
因为他不能再被初始化,成员变量都是定义好的在接口中,一旦定义,在后期的函数和方法中不能就不能改变这个引用,也不能再被初始化,否则编译器会出错!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马