如何使我的类继承其他类的方法

时间:2017-12-14 08:36:34

标签: java

我是核心java的初学者。我们知道类不可能有多重继承,但我的问题是 在业务需求中,已经定义并提供了两个类C1C2。现在C1有方法m1()C2有方法m2()。现在我的班级是C3。如何访问班级m1中的班级m2C1中定义的C2C3的方法,

C3 c3=new C3();
c3.m1();
c3.m2();

通过创建我的类的实例,我应该能够访问给我的类中的方法 注意::不应更改类C1C2的代码,我不应通过创建{{1}的对象来创建C1C2的对象我应该能够访问这些方法。

请帮助我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

  

C1和C2类的代码不应该改变,我不应该改变   通过创建C3应该的对象来创建C1和C2的对象   能够访问这些方法。

除非C2延伸C1(反之亦然),否则这是不可能的。您需要每个实例(composition)或继承层次结构。

答案 1 :(得分:1)

如果您想在程序中进行多重继承,可以使用界面。但是如果你不想改变你的C1和C2类,那么将C1类作为接口的内部类。 C1类及其方法应该是静态的。

interface A
{
    static class C1
{
    static public void m1()
    {
        System.out.print("i am m1");
    }

}
}
class C2
{
    public void m2()
    {
        System.out.print("i am m2");
    }

}
public class C3 extends C2 implements A {
    public static void main(String args[])
    {
        C3 ob= new C3();
        A.C1.m1();
        ob.m2();
    }

}

输出:我是m1           我是m2

您还可以使用多级继承

class C1 
{
     public void m1()
    {
        System.out.print("i am m1");
    }

}

class C2 extends C1
{
    public void m2()
    {
        System.out.print("i am m2");
    }

}
public class C3 extends C2  {

    public static void main(String args[])
    {
        C3 ob= new C3();
        ob.m1();
        ob.m2();
    }

}

输出:我是m1           我是m2