日期:2014-05-20  浏览次数:20680 次

实现接口的一个小问题
假设有一个接口为implementable。另外类implemented 实现了这个接口,接口interface2继承了该接口且添加了一个新的方法。
现在有一个类A,它继承了implemented,并且要实现interface2。它只需实现新的方法newMethod吗?是因为它的父类已经实现了其他两个方法method1和method2吗?可是这两个方法是其父类implemented的,类A只是能访问而已呀、、我有些糊涂了。像各位求教。
Java code

Interface implementable {
    method1();
    method2();
}

Class implemented implements implementable {
    //implementation
}

Interface interface2 extends implementable {
    newMethod();
}

Class A extends implemented implements interface2 {
    //code
}



------解决方案--------------------
class implemented必须实现implementable的两个方法,否则编译不过。

继承interface2的类必须实现三个方法,一个method1(),method2(),newMethod()。

Class A只需要实现一个方法newMethod(),因为父类中的implemented已经实现了 method1();method2();
------解决方案--------------------
对父类里面实现了该接口的两个方法,子类继承了也相当于实现改接口了,子类只要再实现新接口的方法即可,如果你不想使用父类的实现方法,可以自己重写这两个方法,覆盖掉即可。
------解决方案--------------------
测试如下:


结果如下:
---------- JAVA ----------
this is m1
this is m2
this is newm

输出完成 (耗时 0 秒) - 正常终止

方法m1,m2是继承来的,只需要实现新方法newm就可以了
------解决方案--------------------
Java code

interface a
{
    void m1();
    void m2();
}

interface b
{
    
    void newm();
}


class aa implements a
{
    public void m1(){
        System.out.println("this is m1");
    }

    public void m2(){
        System.out.println("this is m2");
    }
}

public class testa extends aa implements b
{
    public void newm(){
        System.out.println("this is newm");
    }

    public static void main(String[] args){
        
        testa a=new testa();
        a.m1();
        a.m2();
        a.newm();
    }
}

------解决方案--------------------
类A只是能访问而已
=======Class A 是继承了父类implemented的方法。不只是访问这么简单,如果只是访问,你能这么写吗?
new A().method1();这已经说明method1()方法属于a 这个实例。

------解决方案--------------------
已经拥有了3个方法。。但是newMethond需要实现