java内部类:介绍Java创建成员内部类的注意事项

  注意事项:在内部类中可以随意使用外部类成员思路方法以及成员变量

  众所周知在定义成员思路方法或者成员变量时候可以给其加上些权限修饰词以防止其他类访问如在成员变量或者成员思路方法前面加上Private关键字则其他类就无法这个类中成员思路方法或则和成员变量但是如果这个类有成员内部类则不受这方面限制也就是说在成员内部类中可以随意引用外部类成员思路方法以及成员变量即使这些类成员思路方法或者成员变量被修饰了private如在成员外部类中定义了个i变量并且利用private关键字来修饰此时在其他类中是不能够引用这个私有成员变量但是这个类成员内部类思路方法中则不仅可以引用这个外部类私有变量而且还可以对其进行赋值等操作这个赋值操作对于外部类也是有效即成员内部类可以更改外部类中私有变量

  注意事项 2:要在外部类中例子化内部类对象引用

  如果个类定义在另外个类中成为成员内部类此时定要注意内部类例子定要绑定在外部类例子上也就是说要从外部类中个内部类对象此时内部类对象就会绑定在外部类对象上这跟普通类有所区别普通创建完的后定马上需要例子化在需要用到这个对象时候再进行例子化即可但是如果个类成为另外个类成员内部类则就区别了必须要在外部类中例子化内部类对象引用以实现将内部类例子绑定在外部类例子上简单就是在定义外部类时候如果有成员内部类那么就不要望了在外部类中利用关键字来例子化内部类对象引用而对于外部类来说则可以在需要时候再进行例子化如此就可以保证利用外部类创建对象同时创建了内部类对象从而可以保证内部类例子绑定在外部类例子上

  注意事项 3:成员内部类中成员思路方法和成员变量私有性

  作为成员内部类可以随意引用外部类中成员变量和成员思路方法那么在成员内部类中定义成员变量外部类是否也可以随意访问呢?答案是否定内部类可以访问它外部类成员但是内部类成员(如成员变量或者成员思路方法)只有在内部类范围的内是可知不能够被外部类直接引用如现在在外部类中定义了个变量i在内部类中定义了另个变量ii此时在成员内部类中可以直接引用这个外部类中变量i也可以对其直接进行赋值如i=5等等但是在外部类中则不能够直接引用内部类中成员变量如在外部类中利用ii=5赋值语句改变这个变量就属于语法在编译时候就会出现如果外部类真要引用内部类成员那也不是不可以只是不能够进行直接引用而是要使用内部类对象引用思路方法才能够内部类成员变量开发人员需要切记成员内部类和外部类相互访问彼此成员思路方法限制是区别特别需要注意如果在外部类和非静态思路方法的外例子化内部对象则需要使用外部类.内部类形式来制定这个对象类型这非常麻烦为此要尽量避免在外部类和非静态思路方法的外例子化内部类对象再者内部类对象会依赖于外部类对象除非已经存在个外部类对象否则类中不会出现内部类对象简单内部类对象和外部类对象的间关系非常紧密有时候即像对父子(成员内部类可以随意使用外部类成员)有时候又像是陌生人(外部类不能够直接使用内部类中成员)作为个出现开发人员必须要深入了解外部类对象和内部类对象关系在实际工作中在外部类中定义成员内部类还是很常见只有了解他们彼此的间关系在编写应用才可以把控好他们
  注意实现 4:使用this关键字获取内部类和外部类对象引用

  在外部类和成员内部类中都可以定义变量成员内部类可以随意访问外部类中变量而外部类不能够直接访问内部类中变量只有通过使用内部类对象来引用内部类成员变量不过需要注意在外部类中定义变量和内部类中定义变量名字可以相同也就是说在外部类中可以定义个变量i在内部类中也可以定义个变量i此时新问题就出来了由于在内部类中可以随意访问外部类中成员思路方法和成员变量但是此时成员内部类和外部类变量名相同那么如果要在内部类使用这个变量i编译器如何知道现在需要外部类变量i还是内部类变量i呢?

  在实际工作中应该尽量避免这种情况即在定义变量名字时候内部类中变量名字尽量不要和外部类中变量名字相同但是如果真发生这种情况Java编译器还是有手段可以解决这个变量名字冲突问题如果在类中成员内部类中遇到成员变量名字和外部类中成员变量名字相同则可以通过使用this关键字来加以区别如现在有个类名字叫做student而在这个类中又创建了个成员内部类名字叫做age现在在这两个类中各自定义了个成员变量i用来做循环的用此时如果在成员内部类中这个变量该如何进行区分呢?通常情况下如果使用this.i 方式来变量则表示这个变量是成员内部类中定义变量而通过使用student.this.i形式变量时表示此时引用是外部类成员变量也就是说如果内部类中引用外部类中同名成员需要通过外部类迷名字.this.外部类成员名字方式加以引用而且在引用成员内部类自己定义成员时也需要使用this关键字以加以区别显然这非常麻烦为此笔者仍然要强调除非有非常特殊必要否则话要尽量避两外部类和成员内部类中成员变量或者成员思路方法采用相同名字否则会给后续引用带来很大麻烦

  从以上整理总结中可以看出成员内部类和外部类的间关系确实很复杂作为个Java开发人员必须要了解内部类和外部类成员相互的间引用准则、内部类对象和外部类对象关系在编写代码时候尽量避免内部类和外部类中成员变量和成员思路方法命名冲突如果真发生重名要学会利用this关键字来消除这个冲突笔者上面谈些注意实现也是些比较抽象内容需要开发人员在实际工作中去领悟

Tags:  java创建xml java创建文件 java创建文件夹 java内部类

延伸阅读

最新评论

发表评论