黑马程序员 关于内部类的一些知识总结

本文详细解析了内部类的概念、访问方式、产生的.class文件、使用场景及注意事项,特别强调了内部类在Android开发中的实际应用,包括如何在类设计阶段利用内部类来表达复杂的实体关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  ------- android培训java培训、期待与您交流! ----------

内部类:在一个类中又写了一个类   这个里面的类就叫内部类


访问方式:
1.内部类可以直接访问外部类的成员.
2.外部类想要访问内部类,必须创建内部类的对象


产生的.class文件
1.外部类正常产生
2.内部类产生  外部类名$内部类名.class


什么时候使用内部类?

一般使用内部类都在设计阶段。
当我们进行分析问题时,发现某个实体内还包含其它的实体,例如,
人是一个实体,人的心脏或人的大脑也可以当作单独的一个实体。
它们都在人体中,那么我们在设计时,就可以使用内部类来定义


class 人{

private class 大脑{}


private class 心脏{}


}

内部类的访问


建议使用的方式:
对于内部类来说,一般我们访问时,内部类的外部类都会提供公共的方式
来让外部去访问内部类.


1.如果内部类不是用private修饰,而是使用默认的权限修饰符或public
 并且当前内部类定义在成员位置上。


 我们可以这样访问


格式   外部类名.内部类名  引用名=new 外部类名().new 内部类名();
 这样也可以得到一个内部类对象.


2.如果内部类定义在成员的位置上,那么你可以使用成员修饰符  public  private  static等
如果当前内部类使用了static修饰


如果类是使用static修饰,那么它只能访问static成员。


注意:如果内部类中有static成员,那么这个内部类必须是static。


对于以上这种情况的内部类它的访问我们可以分成两种


1.类是用static修饰,但成员不是


外部类名.内部类名  引用名  =  new 外部类名.内部类名();


2.类是用static修饰 成员也是


要访问成员


外部类名.内部类名.成员

如果想要在内部类中得到外部类的属性,其实在内部类中相当于持有一个外部类的对象
这个对象是   
外部类名.this


这种什么时候使用,一般是在内部类中存在与外部类的属性相同名字的成员,这时想要访问
外部类的成员,就可以使用上面这种方式。

内部类定义在局部


生成的.class文件名  外部类名$编号内部类名.class


如果有编号,那么这个内部类是定义在局部位置上,如果没有定义在成员位置上。


如果内部类定义在局部位置上,那么去访问局部的成员属性时,这个成员属性必须是
final





class Demo
{
public static void main(String[] args) 
{
OutDemo od=new OutDemo();


od.show(100);
}
}




class OutDemo
{



public void show(final int id){
//final int id=10;//局部的
//内部类  定义在局部
class InnerDemo
{
public void method(){

System.out.println(id);
}
}


InnerDemo ind=new InnerDemo();


ind.method();
}



}



匿名内部类
它就是内部类的一种简化写法


其实匿名内部类更加像一个对象,这个对象它对应的类没有名称。只是通过
特定的格式进行了重写。


格式   new  父类[接口]([参数]){
重写,
也可以创建独立的方法
}.方法


匿名内部类必须有继承  实现的关系,一般都是进行重写操作,也可以定义新的行为 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值