内部类,内置类,嵌套类
访问方式:
内部类可以直接访问外部类中的成员。
外部类想要访问内部类,需要建立内部类对象
有A类和B类
当A类想要直接访问B类中的对象,而B类又需要建立A类的对象来访问A类中的成员 。
这时,就要将A类定义成B类的内部类。
什么时候定义内部类呢?
当分析一个事物时,该事物的内部还有具体的事物,这个具体的事物中再使用事物中的其他成员。这时就将这个具体的事物用内部类来描述。
内部类通常都不会直接对外提供,都会封装到外部类中,外部类一般会通过对外提供方法的形式对其进行访问。
class Body
{
private class Heart
{
}
public Heart getHeart()
{
if();
return new Heart();
}
}
内部类只有默认权限修饰符,或者public修饰符时,可以被外部类直接访问到
注意: 要保证的是该内部类必须定义在外部类的成员位置上
格式: 外部类名.内部类名 变量 = 外部类对象.内部类对象
但是一般不这么用,因为内部类都会被外部类隐藏,通常都是外部类提供方法获取内部类的对象
这样可以对获取的对象可控。
当内部类中如果有静态成员时,该内部类也必须是静态的。
而静态内部类只能访问外部类中的静态成员
在执行static内部类方法时,两种情况
1,内部类静态,但是方法没静态
该方法需要被对象调用执行
2,内部类是静态,而且方法也是静态的
静态内部类随着对象的加载就已经存在了,静态方法随着内部类的加载也存在了
非静态的内部类之所以可以直接访问外部类的成员,
那是因为内部类中都持有一个外部类对象的引用:外部类名.this
静态的内部类之所以可以直接访问外部类中的静态成员,其实持有的是外部类名
内部类定义在类中的局部位置。
内部类只能访问该局部中的被final修饰的常量
匿名内部类:就是没有名字的内部类
好处:简化了内部类的书写
前提:内部类必须要继承或者实现一个外部类或外部接口
格式:new 父类名或者接口(){里面定义该父类或者接口的子类成员}
什么时候使用匿名内部类?
当函数的参数是一个接口类型的引用,而且该接口中的方法不超过3个,这时可以给这个函数传一个匿名内部类实际参数进入
文章来源:http://www.helloprogrammer.com/?p=199
------解决方案--------------------
------解决方案--------------------
帮顶啊
------解决方案--------------------
xiao gui zi 小贵子?
------解决方案--------------------
恩,用过几次,但是不常用
------解决方案--------------------
[b][/b][i][/i][del][/del]a
------解决方案--------------------