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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张庚 中级黑马   /  2013-2-8 13:09  /  1985 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这样的,现在我有一个父类,一个interface,一个子类继承了父类也继承了interface
如果父类和interface中,都有一个method,定义是一模一样的(名字一样,参数一样,return的格式也一样),子类可以同时继承这两种method吗?
举例

父类----
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”里的方式?

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

2 个回复

倒序浏览
这中形式编译肯定是可以通过的,至于你问的第二个问题,我是这样理解的,从语法格式上,必须先继承再实现,所以,像你提出的这种情况,应该是先继承了父类,然后重写父类的方法,然后这个重写后的方法去实现 了接口中的方法。下面的代码验证了这个结果。
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");
        }

}

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
如果子类继承了父类,子类也实现了接口,用代码说就是:
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{}。所以,你可以这样写,就都保证实现了。
  1. //Father是不是抽象类都可以
  2. class Father implements I
  3. {
  4. //.....
  5. }
  6. class Son extends Father implements I{}
复制代码
说到这,基本就清楚了。接口中不论有没有和父类中方法名,参数等等相等的函数,子类对两者复写,都是实现子类的功能,另外,如果你想让父类对象(如果有)实现接口方法,那父类中仍需复写接口中的抽象方法。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马