ITPub博客

首页 > 应用开发 > Java > java内部类的理解

java内部类的理解

原创 Java 作者:eBusinessMan 时间:2015-04-07 21:16:48 1 删除 编辑

         之前一直体会不了java内部类的好处,现在通过一个小项目,在实现队友的抽象类和接口时,终于觉得,java内部类真的是一个很周到的设计!!

举例如下:

         我今天的工作内容是:创建一个类Boy  ,由于业务需要,它必须(1)要继承队友A的包中的类Person,(2)还要继承队友B的包中的父类Man 。

        

public class Person{

                 public void eat(){                                                                         

                          System.out.println(“我吃鸡我吃鸡我吃鸡”);

                 }

                 public void run(){

                          System.out.println(“我跑跑跑”);

                 }

}


public class Man{//站着尿

         private int age;

         private boolean isChild(){

                  if(this.age <= 2){

                          return true;

                  }

                  return false;

         }

         public void standToNiao(){

                  if(isChild()){//standToNiao()内部需要isChild(),

                          System.out.println(“站着尿站着尿站着尿”);

                  }else{

                          System.out.println(“蹲着尿蹲着尿蹲着尿”);

                  }

         }

 }

 

业务需求是:我要创建一个Boy的类,它刚好需要继承类Person的eat(),继承类Man的standToNiao().可是问题来了,java中我怎么可以多继承??!!怎么办呢?!!

         我想了很久也想不出什么方法来做到符合业务需求。无可奈何之时,正准备跟队友说能不能修改一下Man成为接口,可是立马遭到对方的狂喷----因为他负责的项目模块中很多类都是继承了Man的,如果改Man的话,就都得改了,所以他顽强反抗!!我觉得如果这样对他太残忍了。

         就在此时,我翻了一下教科书,咋地一下映入眼帘的是内部类!!!内部类,就是类中的类,最重要的是这个类可以调用外部类的属性和方法!!就这个特点,我觉得就为我的代码设计增添了很多可能性,以及为我在解决问题方面增添了多几条思路!!于是,我尝试着这样设计:

class Boy extends Person{

         private int name;

         private class InBoy extends Man{}//内部类

         public void standToNiao(){

                  InBoy inBoy = new InBoy();

                  inBoy. standToNiao();

         }

}

 

后记:内部类的出现,在代码结构设计方面给了我们更多的选择。其实java里面的很多设计都不是说新增了什么特性,而是为我们编程提供了更多的方案性的解决途径。                                                                                                                                                    

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29900383/viewspace-1535161/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-09-21

  • 博文量
    46
  • 访问量
    134909