我是核心java的初学者。我们知道类不可能有多重继承,但我的问题是
在业务需求中,已经定义并提供了两个类C1
和C2
。现在C1有方法m1()
,C2
有方法m2()
。现在我的班级是C3
。如何访问班级m1
中的班级m2
和C1
中定义的C2
和C3
的方法,
C3 c3=new C3();
c3.m1();
c3.m2();
通过创建我的类的实例,我应该能够访问给我的类中的方法
注意::不应更改类C1
和C2
的代码,我不应通过创建{{1}的对象来创建C1
和C2
的对象我应该能够访问这些方法。
请帮助我解决这个问题吗?
答案 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