父类----
public class Father{
public void method1(int a){.....}
}
INTERFACE----
public interface I{
public void method1(int a); //这里定义一个和父类中method1一样的方式
}
子类――
public class Son extends Father implements I { //Son继承Father 和 I
public void method1(int a){.......} //这里扩充interface里的方式
}
--------END--------
1.Son这个class可以compile吗?(我试验了一下好像可以,有没有问题?)
2.如果可以compile,计算机怎么知道我在子类Son里,是在扩充“Interface I”里的方式还是在覆盖“父类Father”里的方式?作者: 范天成 时间: 2013-2-8 15:36
这中形式编译肯定是可以通过的,至于你问的第二个问题,我是这样理解的,从语法格式上,必须先继承再实现,所以,像你提出的这种情况,应该是先继承了父类,然后重写父类的方法,然后这个重写后的方法去实现 了接口中的方法。下面的代码验证了这个结果。
class Test
{
public static void main(String[] args)
{
new B().method();
}
}
class A
{
public void method()
{
System.out.println("A");
}
}
interface I
{
public void method();
}
class B extends A implements I //将继承和实现调换顺序编译不通过的
{
public void method() //如果注释这个方法,程序编译运行后的结果是A。
{
System.out.println("B");
}
}作者: 黄玉昆 时间: 2013-2-9 15:56
如果子类继承了父类,子类也实现了接口,用代码说就是:
1. class Son extends Father{} 和2 class Son implements I{} 这两句个。此时父类是没有实现接口的,只是子类实现了接口,父类如果要实现接口,那么就需要再加上一句 class Father implements I{},或者直接写class Son extends Father implements I{}就可以了,但这么class Son extends Father implements I{}写,父类是没有实现接口的,要是父类也需要实现接口,还需在class Son extends Father implements I{}的基础上加上class Father implements I{}。所以,你可以这样写,就都保证实现了。