问:有A和B两个普通类,如何在C类中实现A、B两个类的方法?
分析:“实现”这个两个字在java中,指的是一个类继承抽象类或实现接口时,必须去实现抽象类的抽象方法或实现接口的所有方法,这里实现也有重写的意思。
那么 A和B都是普通类,要实现他们的方法就是继承了。
可是问题又来了,java中只能单继承,无法让C同时继承A、B两个类。
解决:在java中解决单继承问题,一般是使用接口,其实解决单继承外还有一个方法,那就是内部类。
内部类会在之后篇文章详解。
内部类有个特点:外围类和内部类可以相互共享资源。
正是因为内部类有这个特点,第一步就可以在C类中创建两个内部类分别继承A、B。
如下:
class A{
void fa(){
}
}
class B{
void fb(){
}
}
class C {
InnerA extends A{
void fa(){ System.out.println("实现A类的方法"); }
}
InnerA extends A{
void fb(){ System.out.println("实现B类的方法"); }
}
}
第二步,为了在其他类中使用C类实现A、B的方法,将两个内部类作为C类的属性。
如下:
class C {
InnerA a=new InnerA();
InnerB b=new InnerB();
InnerA extends A{
void fa(){ System.out.println("实现A类的方法"); }
}
InnerA extends A{
void fb(){ System.out.println("实现B类的方法"); }
}
}
第三步,如何调用
在主方法中使用:
C c=new C();
c.a.fa();//输出:实现A类的方法
c.b.fb();//输出:实现B类方法