在下面的代码中,我要B类继承A类并且实现IA接口,可以报错,为什么?
public class test {

interface IA{
int i=0;
void f();
}

abstract class A{
int i =1;
void f(){
System.out.println(i);
}
}

class B extends A implements IA{---------这一句为什么报错?

}

public static void main(String[] args) {
  }
}

解决方案 »

  1.   

    这里的 A. f();声明成public
      

  2.   

    楼上正解,接口里的抽象方法都是public 的(即使没写public)。
    而类里不写访问控制的话,是包访问权限的。
      

  3.   

    B的方法体没有实现接口IA的方法,在B的方法体里加入
    public void f() {
    System.out.println();
    }
    即可。
      

  4.   

    所有的接口默认都是public方法,实现他的类中的方法默认的也是public.
    public class Test{
    interface IA{
    int i=0;
        void f(); 
    } abstract class A implements IA{
    int i =1;
    public void f(){//此处加上public.
    System.out.println(i);
    }
    } class B extends A implements IA{ } public static void main(String[] args) {
      }
    }
      

  5.   

    这是接口和抽象类之间的问题,接口可以看成是一种特殊的抽象类,他们的关系是,所有的接口都是抽象类,但是每一个抽象类不一定接口,
    class B extends A implements IA;这个语句是说,B类继承了A类并且实现了接口IA,
    因此A类中的方法要用public修饰。
      

  6.   


    为什么A类中的方法要用public修饰?为什么A类中的方法要用public修饰?为什么A类中的方法要用public修饰?