首页 > 应用开发 > Java > java内部类的理解
之前一直体会不了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/ ,如需转载,请注明出处,否则将追究法律责任。