成员内部类的优点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了成员内部类的优点相关的知识,希望对你有一定的参考价值。
成员内部类:作为外部类的一个成员存在,与外部类的属性、方法并列。优点:一方面,内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使声明为private,但是对于处于其内部的内部类还是可见的。)另一方面,可以内部类定义在外部类不可访问的属性。这样就在外部类中实现了比外部类private还要小的额访问权限。
注意:
内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两个类。
对于一个名为Outer的外部类和其内部定义的名为Inner的内部类。编译完成后出现Outer.class 和 Outer$Inner.class 两个类
当Outer是一个private类时,外部类对于其外部访问是私有的,所以就无法建立外部类对象,进而也无法建立内部类对象。 参考技术A 感觉楼上说的是内部类的特性 ,自己使用的时候感觉好处是 变相实现了多继承
首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能。
不过你可能要质疑,更改一下方法的不就行了吗?
的确,以此作为设计内部类的理由,实在没有说服力。
真正的原因是这样的,java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题 没有多继承。实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果本回答被提问者采纳
内部类和外部类的实例变量可以共存
成员内部类:作为外部类的一个成员存在,与外部类的属性、方法并列。
内部类和外部类的实例变量可以共存。
在内部类中访问实例变量:this.属性
在内部类访问外部类的实例变量:外部类名.this.属性。
成员内部类的优点:
⑴内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类声明为PRIVATE,但是对于处于其内部的内部类还是可见的。)
⑵用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。
注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。
对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。
1 package TomText; 2 //用其创建对象,并对创建的对象个数计数。 3 public class TomText_41 { 4 private static int i; 5 private String name; 6 private int age; 7 TomText_41(String n,int a){ 8 name=n; 9 age=a; 10 i++; 11 speak(); 12 } 13 void speak(){ 14 System.out.println("我是第"+i+"个人,名叫"+name+",年龄"+age+"岁"); 15 } 16 public static void main(String [ ] args){ 17 TomText_41 p1=new TomText_41("李大强",20); 18 TomText_41 p2=new TomText_41("张晓明",22); 19 TomText_41 p3=new TomText_41("王金宝",18); 20 } 21 22 }
以上是关于成员内部类的优点的主要内容,如果未能解决你的问题,请参考以下文章