先请看这:
interface a
{
public static final int i;
 
}
public class lesson22 implements a
{
public lesson22()
{
i = 3;
}

public static void main(String[]args)
{

lesson22 b = new lesson22();
System.out.println(b.i);
}
}请问:
问题1,这个程序为什么会出错呢 难道一定要这样声明才行吗 public static final int i = 3;接口不是只是用来对常量进行 定义吗 干嘛要先赋值呢 还有 一定要声明为静态的吗
问题2,如果实现两个接口 而两个接口都有相同的名字,返回类型和参数类别 该怎么实现呢 又该怎么调用呢
谢谢

解决方案 »

  1.   


    被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改
      

  2.   

    另外,final变量的所有字母都应用大写
      

  3.   

    首先要搞清楚,接口不是类,而是一组类的要求。
    接口中可以定义多个方法,也可以定义常量,但是接口中绝不能有实例字段,而且接口也不会去实现方法。提供实例字段和方法实现,那是实现接口的类的任务。接口中的方法自动为public,字段也总是public static final的,因此接口a中字段i前面的public staic final也可以不写,i为final类型,也就是说它的值是不能改变的,因此必须有值才行。
      

  4.   

    问题2,如果实现两个接口   而两个接口都有相同的名字,返回类型和参数类别   该怎么实现呢   又该怎么调用呢 
    谢谢你这个问题问的不好:接口是和类同级别的,他怎么会有返回类型和参数呢,只有方法才有这些,如果你想问的是方法,方法由方法名,方法参数类型,方法参数个数唯一确定。over。
      

  5.   

    建议楼主百度知道一下:抽象类和接口的区别?
    这是经典的面试题,搞清楚了对你继续学Java有好处,呵呵!这里我就不回答了
      

  6.   

    问题1 假设 类 A1,A2继承 a接口 A1 A2分别初始化 a接口的 i 常量 那么 i 这个常量到底 是那个值呢问题2(我以为你是想问 2个接口有完全相同的方法定义) 到没注意过 
    不过根据规则:接口就是定义抽象的行为
    那么如果继承的多个接口有相同的行为的话 应该实现一次就可以了
      

  7.   

    用final定义必须赋初值,因为他是常量
    而且不可修改