public为什么不是protected?只要子类能看见不就行了吗?
final和static也不知道应该怎么解释

解决方案 »

  1.   

    接口的所有成员都应该公开,所以是 public
    接口不能实例化,所以只有静态成员: static
    接口的成员一定应该是常量,所以是 final。第二条按道理说得过去,剩下的不过是 Sun 强加的罢了。
      

  2.   

    谢谢其实我觉得还是很牵强
    为什么接口成员应该是常量呢?比如一个Person接口,两个子类Teacher, Student。学生老师都有姓名,为什么不能在Person接口里面声明一个public String name呢?
      

  3.   

    接口里面的东西不能直接拿出来用,你可以把接口看成一个特殊的抽象类,它里面的数据要子类继承使用的
    person里面的name不能真正拿出来使用,老师,学生都可以调用name
      

  4.   

    接口是一个特殊的抽象类,它里面的数据要子类继承使用的。
    接口的所有成员都应该公开,所以是 public 
    接口不能实例化,所以只有静态成员: static 
    接口的成员一定应该是常量,所以是 final。
      

  5.   

    因为接口不是Class,他没有状态(成员变量),但他提供一个遵循他规则的类的使用需求(实现接口的类实现接口必须实现所以接口中的方法)
    所以,1.需要遵循他规则的类就必须实现他,那么private就没有意义了
    2.既然不是类,没有状态,成员变量就没有意义
    3.既然需要用他的类都要遵循(实现)他提供的方法,那么接口的行为属性就不应该被改变,所以是final的接口没有子类哦,只有子接口,要么就是实现类,如果要抽象name不如把Person定义成抽象类哦~这些只是我个人理解...
      

  6.   

    public 感觉是因为Java对接口的要求是所有类都可以实现接口,不能对接口进行包什么的限制,所以只能是public了static 我感觉和2楼,6楼的答案一致,因为接口不能实例化,所以只能是静态的final  呵呵,看了楼主的问题:为什么接口成员应该是常量呢?问什么,这个问题好啊感觉楼主应该好好看一下Java基础关于接口的部分了,Java的接口中规定了接口中只能有常量,不能有变量 原因,很好理解,因为接口是不能实例化的,而要给一个类中变量赋值,必须是实例化这个类。
      

  7.   

    java语言的设计抉择而已,java程序设计语言这本书上这样介绍:
    Because interfaces contain no implementation details, they cannot define normal fields such a definition would be dictating implementation policy to the classes that choose to implement the interface. Interfaces can define named constants because these are useful in the design of types. For example, an interface that had differing levels of verbosity in its contract might have the following:interface Verbose {
        int SILENT  = 0;
        int TERSE   = 1;
        int NORMAL  = 2;
        int VERBOSE = 3;    void setVerbosity(int level);
        int getVerbosity();
    }基本是说,不要影响实现接口的类的实现策略。
    感觉接口的重点是定义类型可提供的功能。看看http://blog.csdn.net/axman/archive/2009/02/26/3938945.aspx这个不错的。
      

  8.   

    往往非常基础概念是很值得思考的。楼主可以这么考虑,接口无非是已经定义好的行为和原始的状态,开发语言的接口 可以 和 电脑的各接口 比较下。
    电脑的各接口 能随用户更改吗。
    所以,接口的成员默认都是 public static final 的,只是在书写的时候可以省略罢了,但是在引擎加载的时候会自动给加上的。
      

  9.   

    接口中只是定义了方法,并没有实现他,所以要其他的类来实现他,所以接口应该声明为public的
      

  10.   

    接口的所有成员都应该公开,所以是 public 
    接口不能实例化,所以只有静态成员: static 
    接口的成员一定应该是常量,所以是 final。 第二条按道理说得过去,剩下的不过是 Sun 强加的罢了。
    Mark~~~我认为啊   不用管那些的   其实  接口给你里   就是真个和事件包起来   然后让你实现他,,,,,重写他    目的就是继承她的所有东西  在重写
      

  11.   

    这个问题问的很好,抛砖引玉,补充几点(希望对楼主的理解有帮助):
        如果把这个问题从设计或面向对象语言角度来思考,相信会更明白SUN为什么要这样定义interface.
        interface 在设计角度上通俗的定义standard(标注),从面向对象来说我们可以把它看做一个USB接口,所以:
        1.既然是标准,那就应该向外开放,于是接口的所有成员都应该 public
        2.既然是标准,那就不能轻易改变,而且要满足开放性,于是变量需要static (满足开放性),final(满足不可变性) 
      

  12.   


      使用接口,就是为了增加代码的可维护性,也就是说避免对代码重复写.
    那就是需要其它类来实现接口,所以它必须是Public。
      

  13.   

    接口的所有成员都应该公开,所以是 public 
    接口不能实例化,所以只有静态成员: static 
    接口的成员一定应该是常量,所以是 final。 第二条按道理说得过去,剩下的不过是 Sun 强加的罢了。学习,不错!!
      

  14.   

    public为什么不是protected?只要子类能看见不就行了吗?
    当然不行,子类能看见能实现该接口固然没错,但是其他内还要调用啊,光实现了,不能被别人调用有什么意义呢。final和static也不知道应该怎么解释个人觉得 接口中本不该有变量,但是存在一些常量是可以理解的。
    为了防止子类修改这些值所以定位final , 为了防止子类未初始话就使用所以要用static final来限制