经典面试题1

问:有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类方法

            

 

posted @ 2014-10-26 12:43  夜未央T  阅读(132)  评论(0编辑  收藏  举报